こんにちは。よろしくお願いします。
エクセルで出荷入力画面シートに数字を入力。もし、発注しなくてはならない
在庫数設定より(在庫限界入力シート)、その商品の総合計(在庫残高シート)が
少なくなったら、メッセージボックスに警告を表示したいのです。
先日、親切な方々のアドバイスで、以下のように組んで見ましたが、
入力シートにはたくさんの商品があり、どのセルに入れても全部同じメッセージ
ボックスがでてしまいます。これができないと、お茶組のままです。
がんばって作ってきたエクセルが、期限に間に合いません。助けてください。
Private Sub Worksheet_Calculate()
dim counter as integer
If Worksheets("在庫残高").Range("C6") < Worksheets("在庫限界入
力").Range("C6") Then
counter=Worksheets("在庫限界入力").Range("C6")-Worksheets("在庫
残高").Range("C6")
MsgBox counter& "本在庫不足", vbOKOnly, "警告"
End If
End Sub
一行目のworksheetをobjectにしてもだめでした。また()のなかに入力する
全てのセルの範囲を指定してもだめでした。
どうすればいいのでしょう。
No.1ベストアンサー
- 回答日時:
>どのセルに入れても全部同じメッセージボックスがでてしまいます。
#241482については、単一の『C6』の変更時の判定の仕方を書いています。
どのようにして『Worksheets("在庫残高").Range("C6")』が更新されるか分からなかったからです。
この例を沢山の商品の在庫残高についても同様に使われているようですが、複数にするには変更が必要でしょう。
出荷入力画面シートの入力がどのように在庫残高シートに反映するかがはっきりしないと解決にはならないかもしれません。
出荷入力画面シートに入力すると在庫残高シートの『同じ列が更新』されるとすると、以下の訂正くらいで対応できるかもしれません。
出荷入力画面シートのコードウインドウに貼り付け、#241482と同じように、在庫残高シートで変動する数値を、出荷入力画面シートで分かるようにしておく必要があります。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim clm As Integer '入力したセルの列
Dim counter As Long '不足数
clm = Target.Column
If Worksheets("在庫残高").Cells(6, clm) < Worksheets("在庫限界入力").Cells(6, clm) Then
counter = Worksheets("在庫限界入力").Cells(6, clm) - Worksheets("在庫残高").Cells(6, clm)
MsgBox counter & "本在庫不足", vbOKOnly, "警告"
End If
End Sub
本当にありがとうございます。質問するたびに本と照らし合わせて
勉強しています。
おかげさまで、質問の答えがわかり、ちゃんと思い通りになりました。
でも・・・おっちょこちょいな私なので、また新たな問題が発生しました。
それは、新しい質問をしますので、もしよかったら
もう一度御教授ください。
よろしくおねがいします。
No.2
- 回答日時:
正直VBAは詳しくはないです。
おかしな部分もあるかと思います。・飛び飛びのセルを参照できる。
・出荷入力時で在庫がマイナスになるなら在庫数は0で不足分を返す。
・出荷入力時で在庫がまだあるなら差し引き分を在庫数とし、不足分を返す。
・限界に満たないなら差し引き分を在庫とする。
Private Sub Worksheet_Change(ByVal target As Range)
'出荷入力セルのアドレス取得
Dim taddr As String: taddr = target.Address
'出荷入力したアドレスがA1?
If taddr = "$A$1" Then
'chgZaiko(入力アドレス,在庫アドレス,限界アドレス)
Call chgZaiko(taddr, "C6", "C6")
ElseIf taddr = "$A$2" Then
Call chgZaiko(taddr, "C7", "C7")
End If
End Sub
Private Sub chgZaiko(ByVal addr1 As String, ByVal addr2 As String, ByVal addr3 As String)
Dim count As Integer: count = 0
Dim inpt As Integer: inpt = Worksheets("出荷入力").Range(addr1)
Dim zaiko As Integer: zaiko = Worksheets("在庫残高").Range(addr2)
Dim genkai As Integer: genkai = Worksheets("在庫限界入力").Range(addr3)
'在庫数-出荷数 < 限界数
If zaiko - inpt < genkai Then
If zaiko - inpt < 0 Then
'在庫数-出荷数<0なら在庫数は0
Worksheets("在庫残高").Range(addr2) = count
MsgBox inpt - zaiko & "在庫不足", vbOKOnly, "警告"
Else
'在庫数-出荷数>0なら在庫数は在庫数-出荷数
count = genkai - (zaiko - inpt)
Worksheets("在庫残高").Range(addr2) = zaiko - inpt
MsgBox count & "在庫不足", vbOKOnly, "警告"
End If
Else
'在庫数-出荷数 > 限界数
count = zaiko - inpt
Worksheets("在庫残高").Range(addr2) = count
MsgBox "現在の在庫数" & count
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで各列の"+"と"o"の合計数を...
-
VBA listBoxから
-
IEの通知バー制御ができなくなった
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
VBA初心者 Ctrl+での操作、ボタ...
-
VBA 何かしら文字が入っていたら
-
エクセルのマクロについて教え...
-
VBAに詳しい方教えてください。
-
ExcelVBA シート名を複数セルか...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
CADシステムに図面番号を入力し...
-
【ExcelVBA】インデックスが有...
-
Outlookの「受信日時」「件名」...
-
Excelについて
-
Excel VBA 定義されたプロージ...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ExcelのVBAコードについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコードを教えてください
-
【ExcelVBA】インデックスが有...
-
ExcelVBA シート名を複数セルか...
-
エクセルvbaについて
-
エクセルのマクロについて教え...
-
【VBA】マクロの入ったファイル...
-
VBA UserFormからの転記で
-
エクセルVBAの配列について
-
Excelで「Ctrl+c」、「Ctrl+v...
-
VBAコードについて教えてくださ...
-
ExcelのVBAコードについて教え...
-
Excel マクロについての相談
-
VBAで質問があります
-
VBAコードについて
-
【ExcelVBA】VBA実行でダイアロ...
-
Excel関数またはVBAでの質問に...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
Outlookの「受信日時」「件名」...
おすすめ情報