Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3950 / 13646 ツリー ←次へ | 前へ→

【59315】メッセージボックスの表示 さくら 08/12/5(金) 23:05 質問[未読]
【59317】Re:メッセージボックスの表示 rim 08/12/6(土) 7:50 回答[未読]
【59318】Re:メッセージボックスの表示 arajin 08/12/6(土) 7:52 回答[未読]
【59319】なるほど さくら 08/12/6(土) 8:03 お礼[未読]

【59315】メッセージボックスの表示
質問  さくら  - 08/12/5(金) 23:05 -

引用なし
パスワード
    例えばシートB〜シートFがあってボタン(シートA)のボタンを押すと
シートB〜Fの各J4〜J20の値が0以下があればメッセージボックスで〜がありませんと表示
※メッセージボックスにはメッセージ+ボタン(閉じる為)

唯、表示はシートAでしかもシートBのJ4が0以下のときはシートBのC4をメッセージで””がありませんの””の間にいれる。
尚、いっぱい0以下があるときは閉じるを押すと次のがでてくる(順次閲覧したい)


ほかのサイトで回答を頂いたのですが
Sub Sample()
 Dim ws As Worksheet
 Dim c As Range
 
 For Each ws In Sheets(Array("シートB", "シートC", "シートD", "シートE", "シートF"))
  For Each c In ws.Range("J4:J20")
   If c.Value <= 0 Then
    MsgBox ws.Name & " の " & c.Address(0, 0) & " がありません"
   End If
  Next
 Next
 MsgBox "終了しました"
End Sub
上記のコードだと
例えばシートFのJ4が条件をみたす(0以下)時に
”シートFのJ4がありません”と表示されます
これを
”シートFの在庫がありません”と表示したいです
※C4=在庫
J4のときC4.J5のときC5と20までしたいのですがオフセットとかでおこなうのでしょうか?

【59317】Re:メッセージボックスの表示
回答  rim  - 08/12/6(土) 7:50 -

引用なし
パスワード
   試してないけど動くと思う。
最後の質問は訳が分からなかったのでスルー
自分で調べて出きる様になることを覚えましょう。

Sub Sample()
 Dim ws As Worksheet
 Dim c As Range

 For Each ws In Sheets(Array("シートB", "シートC", "シートD", "シートE", "シートF"))
  For Each c In ws.Range("J4:J20")
   If c.Value = 0 Then
    MsgBox ws.Name & " の " & c.Address(0, 0) & " がありません"
   ElseIf c.Value < 0 Then
    MsgBox ws.Name & "の" & c.Address(0, 0) & "在庫がありません"
   End If
  Next
 Next
 MsgBox "終了しました"
End Sub

【59318】Re:メッセージボックスの表示
回答  arajin  - 08/12/6(土) 7:52 -

引用なし
パスワード
   >& c.Address(0, 0) &
だって、この指定だとアドレスを表示しろってことですよ。

左隣のセルの値を表示させるなら、
c.Offset(, -1).Value
でしょう。
変数cがJ列のセルを指すのならば、C列はOffset(, -7)でしょうかね。
確認してみてください。

【59319】なるほど
お礼  さくら  - 08/12/6(土) 8:03 -

引用なし
パスワード
   アドレスじゃなくてオフセットをそこにいれるんですね
勉強になりました
ありがとうございます

3950 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free