セルの値がマイナスの場合0にする。あと項目追加など 【VBA在庫管理#24】

Excel VBA 部品在庫管理アイキャッチ画像部品在庫管理

やる気スイッチ入ってますか? どうもoReです。

今回もデータベース項目の追加などしていきます。

マイナスは0表示させる

前回、項目を追加して動作確認したと思いますが、
なんかわかりにくくないですか?

マイナス表示

 

過剰在庫数が-1だったり、在庫不足数が-4だったり…
つまりどうゆうこと?と考えちゃいますよね。

過剰在庫数=在庫数-最大在庫数なので、
過剰在庫数がマイナスの場合は、過剰在庫がありませんという事
在庫不足数=最少在庫数-在庫数なので、
在庫不足数がマイナスの場合は、在庫不足がありませんという事
部品注文数=最大在庫数-在庫数なので、
部品注文数がマイナスの場合は、部品注文しなくてもいいという事

になります。

 

というわけで、コードの手直しをしてマイナスの場合は0にしましょう。

  ↓単純にこんな感じ

With Knskcell
  '過剰在庫数=在庫数-最大在庫数
  .Offset(0, 7) = .Offset(0, 4) - .Offset(0, 5)
  If .Offset(0, 7) < 0 Then .Offset(0, 7) = 0 '過剰在庫数が0より小さい場合0
  '在庫不足数=最少在庫数-在庫数
  .Offset(0, 8) = .Offset(0, 6) - .Offset(0, 4)
  If .Offset(0, 8) < 0 Then .Offset(0, 8) = 0 '在庫不足数が0より小さい場合0
  '部品注文数=最大在庫数-在庫数
  .Offset(0, 9) = .Offset(0, 5) - .Offset(0, 4)
  If .Offset(0, 9) < 0 Then .Offset(0, 9) = 0 '部品注文数が0より小さい場合0
  '部品合計金額=在庫数*部品単価
  .Offset(0, 11) = .Offset(0, 4) * .Offset(0, 10)
  If .Offset(0, 11) < 0 Then .Offset(0, 11) = 0 '部品合計金額が0より小さい場合0
End With

 

※If文 処理が1行の場合は、End Ifを省略できます。

マイナスの場合0になるので、だいぶ見やすくなったと思います。

 

発注点数を追加

部品の在庫数が何個になったら発注するかを決める数を発注点数としますか。

最少在庫数になったら発注してもいいんだけど、納入されるまで時間が掛かった場合、
在庫不足となってしまう可能性がありますよね。

そのへんを加味するために、発注点数を追加します。

  ↓データベースシートに追加

発注点数追加

そうしたら、プログラムの方も追加します。

動作としては、発注点数以下になったら部品注文数を算出するといった感じにしますか。

※シートに発注点数の項目を追加したので、Offsetに注意

  ↓こんな感じ

With Knskcell
  '過剰在庫数=在庫数-最大在庫数
  .Offset(0, 7) = .Offset(0, 4) - .Offset(0, 5)
  If .Offset(0, 7) < 0 Then .Offset(0, 7) = 0 '過剰在庫数が0より小さい場合0
  '在庫不足数=最少在庫数-在庫数
  .Offset(0, 8) = .Offset(0, 6) - .Offset(0, 4)
  If .Offset(0, 8) < 0 Then .Offset(0, 8) = 0 '在庫不足数が0より小さい場合0
  '在庫数が発注点数以下の場合
  If .Offset(0, 4) <= .Offset(0, 9) Then
    '部品注文数=最大在庫数-在庫数
    .Offset(0, 10) = .Offset(0, 5) - .Offset(0, 4)
    If .Offset(0, 10) < 0 Then .Offset(0, 10) = 0 '部品注文数が0より小さい場合0
  Else: .Offset(0, 10) = 0 '在庫数が発注点数以上の場合0
  End If
  '部品合計金額=在庫数*部品単価
  .Offset(0, 12) = .Offset(0, 4) * .Offset(0, 11)
  If .Offset(0, 12) < 0 Then .Offset(0, 12) = 0 '部品合計金額が0より小さい場合0
End With

 

※If文 Elseの後ろに『:』コロンを付けます。

動作確認してみてください。
ちゃんと算出できてますか?

oReのぞき見

Date 最終入出庫年月日と部品不動日数を追加

・Date デェィトゥ

Dateは、『日付』という意味みたいです。

 

Nowは、今の年月日と時間でしたよね。

Dateは、年月日を取得できます。

今回は、Dateを使って日付を取得します。

データベースシートに、最終入出庫年月日部品不動日数を追加しましょう。

  ↓データベースシートに追加

最終入出庫年月日と部品不動日数追加

 

入出庫した年月日をシートに出力して、部品不動日数へ0を入れます。

With Knskcell
  '過剰在庫数=在庫数-最大在庫数
  .Offset(0, 7) = .Offset(0, 4) - .Offset(0, 5)
  If .Offset(0, 7) < 0 Then .Offset(0, 7) = 0 '過剰在庫数が0より小さい場合0
  '在庫不足数=最少在庫数-在庫数
    省略
  '部品合計金額=在庫数*部品単価
  .Offset(0, 12) = .Offset(0, 4) * .Offset(0, 11)
  If .Offset(0, 12) < 0 Then .Offset(0, 12) = 0 '部品合計金額が0より小さい場合0
  .Offset(0, 13) = Date '最終入出庫年月日
  .Offset(0, 14) = 0 '部品不動日数
End With

 

部品不動日数は、部品の入出庫がされていない日数
つまり、部品が動いていない日数となります。

例えば、5年も動いていない部品は必要なしと判断して
ヤフオクで売るとか、メルカリで売るとかできるし(笑)

oReびっくり

会社のもの売っちゃだめだろ!!だって?
昨日捨てましたとでも言っとけ(笑)

注)本当にやっちゃだめよ!!たとえゴミ箱のゴミも会社のものだからね。

とりあえず、入出庫した部品の部品不動日数は0となりますが、
入出庫していない部品の部品不動日数を算出しないといけませんよね。

 

入出庫していない部品不動日数を算出するには、
何かしらのトリガーが必要になります。

・Trigger トゥリィガァ

Triggerは、ピストルとかの引き金のことらしいです。
まあ、プログラムを動かすきっかけみたいな感じ。

 

Private Sub CommandButton1_Click()←これもトリガー

何かの部品を入出庫した時に、入出庫していない部品の
部品不動日数を算出させてもいいんだけど…

入出庫の時、毎回すべての部品不動日数の算出をする事になるんだよね…

 

まとめ

If文 処理が1行の場合 End If 省略可
 If ○○ Then 処理
If文 Elseを1行にする コロンを付ける
 Else: 処理
Date 年月日を取得
トリガー プログラムを動かすきっかけ

oReやる気スイッチ

次回 部品不動日数を算出するトリガーをつくるよ

ExcelVBA部品在庫管理【目次】へ戻る

コメント

タイトルとURLをコピーしました