[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『こんな在庫表を作りたいんです』(あき)
下記のような在庫表を作りたいんです。
1日1回の在庫更新ではなく、
1日に何回か行われる仕入れの入庫時や、
お客さんが買った時の出庫時ごとに更新したいです。
要は入出庫の変動があるごとに入出庫数を入力し、
常に最新の在庫数が知りたいという表です。
私が入力するのは入庫数と出庫数のところだけで、
後は自動的にそれぞれが計算され、更新されていくといったもので、
さらには入庫累計・出庫累計もほしいんです。
という希望ばかりですいません。
一体どんな計算式をどこに入れたらそんな表ができるのでしょうか?
どなたかお力をお貸しいただけませんか?
品名 現在庫数 入庫数 出庫数 前在庫数 入庫累計 出庫累計
みかん
いちご
りんご
>現在庫数 入庫数 出庫数 前在庫数 入庫累計 出庫累計
各項目の意味を説明していただけませんか?
(INA)
現在庫数は、今倉庫にある数。仕入れたとき・売ったときに更新される数。
入庫数は、新たに仕入れたときの倉庫に収める数。
出庫数は、お客さんに売ったときの倉庫から出る数。
前在庫数は、新たに入出庫数を入力する前の在庫数。
これは私が入力ミスしたときに、入力処理前の在庫数を確認するためのものですので無くてもいいとも思います。
入庫累計は、1ヶ月のトータル入庫数。
出庫累計は、1ヶ月のトータル出庫数。
という意味で作成したいと考えています。
こんな感じなんですが、おわかりいただけますでしょうか?(あき)
>1ヶ月のトータル 日付の項目(列)がないので、「1ヶ月のトータル」の定義は分かりませんが、 簡単に作ってみたのでお試し下さい。
Sheet1 の様式は、掲載して頂いたとおり、以下のようにして下さい。 (なお、前在庫数は使用してません。)
A B C D E F G 1 品名 現在庫数 入庫数 出庫数 前在庫数 入庫累計 出庫累計 2 みかん =F2-G2 3 いちご =F3-G3 4 りんご =F4-G4 ↑ (数式)
1.ALT+F11キーで、VBEを起動 2.プロジェクトウィンドウのSheet1 を Wクリック 3.中央の真っ白なウィンドウ(コードウィンドウ)に以下のコードをコピペ
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then MsgBox "同時に複数のセルを変更することは出来ません。", vbExclamation, "エラー" Application.EnableEvents = False Application.Undo Application.EnableEvents = True Exit Sub End If
If Target.Value = 0 Then Exit Sub
Target.Select
Application.EnableEvents = False
'================ ' C列 入庫 '================ If Target.Column = 3 And Target.Row >= 2 Then
'色付け Range(Cells(Target.Row, 1), Cells(Target.Row, 7)).Interior.ColorIndex = 36
If vbYes = MsgBox(Target.Value & " でよろしいですか?" & Chr(13) & _ "入庫累計 = " & Cells(Target.Row, 6).Value & " → " & _ Cells(Target.Row, 6).Value + Target.Value, _ vbYesNo + vbQuestion, "入庫数の入力") Then
'入庫累計 Cells(Target.Row, 6).Value = Cells(Target.Row, 6).Value + Target.Value End If
'色消し Range(Cells(Target.Row, 1), Cells(Target.Row, 7)).Interior.ColorIndex = xlColorIndexNone End If
'================ ' D列 出庫 '================ If Target.Column = 4 And Target.Row >= 2 Then '色付け Range(Cells(Target.Row, 1), Cells(Target.Row, 7)).Interior.ColorIndex = 35
If vbYes = MsgBox(Target.Value & " でよろしいですか?" & Chr(13) & _ "出庫累計 = " & Cells(Target.Row, 7).Value & " → " & _ Cells(Target.Row, 7).Value + Target.Value, _ vbYesNo + vbQuestion, "出庫数の入力") Then
'出庫累計 Cells(Target.Row, 7).Value = Cells(Target.Row, 7).Value + Target.Value End If
'色消し Range(Cells(Target.Row, 1), Cells(Target.Row, 7)).Interior.ColorIndex = xlColorIndexNone End If
Application.EnableEvents = True End Sub
(INA)
わー、INAさんありがとうございます。
一瞬アルファベットの多さにどうしようっと固まってしまいました。
今早速ためさせていただきました。
INAさん、すごい!
在庫表ができました!しかも入力すると確認の画面が出てきますね!
私のようなおっちょこちょいにはとても重要です!
ところで、Eの前在庫数の列を削除しようと思ったら「同時に複数のセルを変更することはできません」と出てしまいました、
さらにBの現在庫数の計算式を下のセルに一気にコピペしようとしたら同じメッセージが出てしまいました。
このメッセージはINAさんの計算式に入っていましたので、ミスをしないようにするための手段でしょうか?(あき)
>Eの前在庫数の列を削除しようと思ったら >「同時に複数のセルを変更することはできません」と出てしまいました、
>さらにBの現在庫数の計算式を下のセルに一気にコピペしようとしたら >同じメッセージが出て しまいました。
ひとまず処理内容的に問題ないか確認して頂くためのサンプルでしたので・・(^_^;) 以下のように修正しました。
Eの前在庫数の列も無くしましたので、以下のようにしてください。
A B C D E F 1 品名 現在庫数 入庫数 出庫数 入庫累計 出庫累計 2 みかん =F2-G2 3 いちご =F3-G3 4 りんご =F4-G4
Private Sub Worksheet_Change(ByVal Target As Range)
'C,D列以外は終了 If Target.Column < 3 Or Target.Column > 4 Then Exit Sub End If
'変化したセルが2箇所以上のとき If Target.Count <> 1 Then MsgBox "同時に複数のセルを変更することは出来ません。", vbExclamation, "エラー" Application.EnableEvents = False Application.Undo Application.EnableEvents = True Exit Sub End If
'0に変化したときは終了 If Target.Value = 0 Then Exit Sub
Target.Select
Application.EnableEvents = False
'================ ' C列 入庫 '================ If Target.Column = 3 And Target.Row >= 2 Then
'色付け Range(Cells(Target.Row, 1), Cells(Target.Row, 6)).Interior.ColorIndex = 36
If vbYes = MsgBox(Target.Value & " でよろしいですか?" & Chr(13) & _ "入庫累計 = " & Cells(Target.Row, 5).Value & " → " & _ Cells(Target.Row, 5).Value + Target.Value, _ vbYesNo + vbQuestion, "入庫数の入力") Then
'入庫累計 Cells(Target.Row, 5).Value = Cells(Target.Row, 5).Value + Target.Value End If
'色消し Range(Cells(Target.Row, 1), Cells(Target.Row, 6)).Interior.ColorIndex = xlColorIndexNone End If
'================ ' D列 出庫 '================ If Target.Column = 4 And Target.Row >= 2 Then '色付け Range(Cells(Target.Row, 1), Cells(Target.Row, 6)).Interior.ColorIndex = 35
If vbYes = MsgBox(Target.Value & " でよろしいですか?" & Chr(13) & _ "出庫累計 = " & Cells(Target.Row, 6).Value & " → " & _ Cells(Target.Row, 6).Value + Target.Value, _ vbYesNo + vbQuestion, "出庫数の入力") Then
'出庫累計 Cells(Target.Row, 6).Value = Cells(Target.Row, 6).Value + Target.Value End If
'色消し Range(Cells(Target.Row, 1), Cells(Target.Row, 6)).Interior.ColorIndex = xlColorIndexNone End If
Application.EnableEvents = True End Sub
もう少しお付き合いください、今度は入庫数に入力しても現在庫数に数が入ってくれません。
逆に出庫数に入力すると、現在庫数に数字が入ります。
せっかく教えていただいているのにすいませんが、ご確認していただけますか?(あき)
数式のミスです。
A B C D E F 1 品名 現在庫数 入庫数 出庫数 入庫累計 出庫累計 2 みかん =E2-F2 3 いちご =E3-F3 4 りんご =E4-F4
(INA)
INAさん、本当にありがとうございました!
ばっちり大丈夫になりました。
うれしいです!
この表を使ってしっかり在庫管理していきます。
またよろしくお願い致します。
ありがとうございました。(あき)
喜んで頂けて幸いです。ヾ(^_^)
(INA)
できれば過去ログに質問を追加するのではなく、新規にスレを立ててください。 その上で参照しているスレッドにリンクを貼るなどして下さい。
さて、INAさんのコードをちょっとだけ変えました。 コードの意味を理解すれば、それほど大変な変更は必要ないことが理解できると思いますが。 (ROUGE) '---- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column < 4 Or Target.Column > 5 Then Exit Sub If Target.Count <> 1 Then MsgBox "同時に複数のセルを変更することは出来ません。", _ vbExclamation, "エラー" Application.EnableEvents = False Application.Undo Application.EnableEvents = True Exit Sub End If If Target.Value = 0 Then Exit Sub Target.Select Application.EnableEvents = False '================ ' D列 入庫 '================ If Target.Column = 4 And Target.Row >= 2 Then Range(Cells(Target.Row, 1), Cells(Target.Row, 7)) _ .Interior.ColorIndex = 36 If vbYes = MsgBox(Target.Value & " でよろしいですか?" & Chr(13) & _ "入庫累計 = " & Cells(Target.Row, 6).Value & " → " & _ Cells(Target.Row, 6).Value + Target.Value, _ vbYesNo + vbQuestion, "入庫数の入力") Then Cells(Target.Row, 6).Value = _ Cells(Target.Row, 6).Value + Target.Value End If Range(Cells(Target.Row, 1), Cells(Target.Row, 7)) _ .Interior.ColorIndex = xlColorIndexNone End If '================ ' E列 出庫 '================ If Target.Column = 5 And Target.Row >= 2 Then Range(Cells(Target.Row, 1), Cells(Target.Row, 7)) _ .Interior.ColorIndex = 35 If vbYes = MsgBox(Target.Value & " でよろしいですか?" & Chr(13) & _ "出庫累計 = " & Cells(Target.Row, 7).Value & " → " & _ Cells(Target.Row, 7).Value + Target.Value, _ vbYesNo + vbQuestion, "出庫数の入力") Then Cells(Target.Row, 7).Value = _ Cells(Target.Row, 7).Value + Target.Value End If Range(Cells(Target.Row, 1), Cells(Target.Row, 7)) _ .Interior.ColorIndex = xlColorIndexNone End If Application.EnableEvents = True End Sub
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.