こんにちは。よろしくお願いします。
エクセルで出荷入力画面シートに数字を入力。もし、発注しなくてはならない
在庫数設定より(在庫限界入力シート)、その商品の総合計(在庫残高シート)が
少なくなったら、メッセージボックスに警告を表示したいのです。
先日、親切な方々のアドバイスで、以下のように組んで見ましたが、
入力シートにはたくさんの商品があり、どのセルに入れても全部同じメッセージ
ボックスがでてしまいます。これができないと、お茶組のままです。
がんばって作ってきたエクセルが、期限に間に合いません。助けてください。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Web画面の文字をVB6で取得したい
-
Excel 範囲指定スクショについ...
-
配列のペースト出力結果の書式...
-
VBA 別ブックから条件に合うも...
-
エクセルVBAにて =A1=B1とすれ...
-
Excelについて
-
【ExcelVBA】インデックスが有...
-
Excelで画像URLを1つずつセル...
-
Excel VBA 文字列のセルを反映...
-
VBA 指定した回数分、別シート...
-
【VBA】カーソルのある行の1行...
-
ExcelVBAのFindFirstエラ...
-
VBA 入力箇所指定方法
-
VBA 複数の各シートに行を追加...
-
10行目にフィルターを使用して...
-
Excel VBAで値を変えながら、pd...
-
VBA実行後に元のセルに戻りたい
-
エクセルのマクロについて教え...
-
vbaにてseleniumを使用したedge...
-
メールの件名をデコードしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 別ブックからコピペしたい...
-
Vba ファイル書き込み時に書き...
-
Excel_VBAについて質疑です。(...
-
VBAの間違い教えて下さい
-
VBA コードどこがおかしいですか?
-
VBA 円グラフ 特定条件に一致し...
-
VBA 別ブックから条件に合うも...
-
pdfファイルの複数添付 引数の型
-
【ExcelVBA】インデックスが有...
-
ExcelVBAマクロで実行した時の疑問
-
Vba UserformからExcelシートの...
-
VBA初心者です。次のVBAコード...
-
Outlookの「受信日時」「件名」...
-
Excel 範囲指定スクショについ...
-
vbs ブック共有を解除
-
配列のペースト出力結果の書式...
-
Excel VBAで値を変えながら、pd...
-
VB.net(VB)で、フォームにExcel...
-
vbaにてseleniumを使用したedge...
-
ExcelVBA シート名を複数セルか...
おすすめ情報