
VBA質問です。
下記のようにマクロを作りました。E2、E3、E4、E5、E6とそれぞれのセルに×が入っているときに、メッセージを出し、
〇が入っているときはメッセージを出したくありません。
また、A1に入ったタイトル名、B2、B3、B4、B5、B6とそれぞれのセルに入れた項目名(間違ったものが入っているものもある)をそれぞれ出したいのですが、マクロを実行するとB2の項目ばかり出てしまい困っています。
※C列(C2以降)はA列(A2以降)に入った項目名とB列(B2以降)に入った項目名を結合する列として使っています。D列は都合により空欄としています。
また、E列に〇が入っているときだけメッセージが出て、×が出ているものはメッセージ表示されません。
どうしたらいいでしょうか。
どうぞよろしくお願いいたします。
Sub チェッカーMsgbox01() 'セルの値とアイコンを表示する
Dim I, C As Long
Dim J, D As Long
Dim result As Range
Dim msg As String
For I = 2 To 6 '2行目~6行目まで繰り返します
Set result = Range("E" & I)
If result = "×" Then
MsgBoxVisible = True
MsgBox (Range("B" & I) & vbCrLf & Range("B" & I) & vbCrLf & Range("B" & I) & vbCrLf & Range("B" & I) & vbCrLf & Range("B" & I)) & vbCrLf, vbCritical
'メッセージボックスにA列の「名前」、「アイコン」を表示します。
End If
Next I
For J = 2 To 6 '2行目~6行目まで繰り返します
Set result = Range("E" & J)
If result = "〇" Then
MsgBoxVisible = False
MsgBox (Range("B" & J) & vbCrLf & Range("B" & J) & vbCrLf & Range("B" & J) & vbCrLf & Range("B" & J) & vbCrLf & Range("B" & J)) & vbCrLf, vbInformation
'メッセージボックスにA列の「名前」、「アイコン」を表示します。
End If
Next J
MsgBoxVisible = True
MsgBox "チェック結果は以上です"
End Sub

No.2ベストアンサー
- 回答日時:
どのような動作を考えているかがイマイチわからないので、添付画像のうち、E2/E4/E6の値が”x”だった場合にどんな体裁でメッセージボックスに表示させるのかを手書きなどでもいいですから、描いてもらえますか?
現時点でわかる誤りは、
Set result = Range("E" & I)
この部分です。
またRange型はなくバリアントもしくはストリング型が適正です。
result = Range("E" & I).Value
でよいです。
もっと言うと、単に判別で一度しか登場していないので、
IF result = "×" Then~ は IF Range("E" & I).Value = "×" Then~
でよいです。(変数resultは不要)
以下、こういう事かな?というコードを書いています。
Sub チェッカーMsgbox02() 'セルの値とアイコンを表示する
msg = ""
For I = 2 To 6
If Range("E" & I) = "×" Then
msg = msg & Range("A" & I).Value & " : " & Range("B" & I).Value & vbCrLf
End If
Next I
If msg = "" Then
MsgBox "該当データはありませんでした"
Else
MsgBox (Range("A1").Value & vbCrLf & msg & vbCrLf )& vbCrLf, vbCritical
End If
MsgBox "チェック結果は以上です。"
End Sub
ありがとうございます。以下でやりたいことが実現できました。助かりました。
Sub チェッカーMsgbox01() 'セルの値とアイコンを表示する
Dim I As Long
Dim result As String
Dim msg As String
Dim MsgBoxVisible As Boolean
msg = msg & Range("A1") & vbCrLf
For I = 2 To 6 '2行目~6行目まで繰り返します 7行目以降は無視します
result = Cells(I, "E").Value
If result = "×" Then
'メッセージボックスに「×アイコン」と、E列に×が入った行の内容を表示します。
MsgBoxVisible = True
msg = msg & Cells(I, "D").Value & vbCrLf
'メッセージボックスに表示する内容に、A列「タイトル名」とB列「項目名」を結合した D列の内容を追加します。
End If
Next I
If MsgBoxVisible Then MsgBox msg, vbCritical
MsgBox "チェック結果は以上です"
End Sub
No.1
- 回答日時:
良く仕様がわからないのですが、こういうことでしょうか。
E列が×の場合、その行のA列とB列を連結して表示しています。
×が1件もない場合は、メッセージボックスを表示しません。
Sub チェッカーMsgbox01() 'セルの値とアイコンを表示する
Dim I, C As Long
Dim result As String
Dim msg As String
msg = ""
For I = 2 To 6 '2行目~6行目まで繰り返します
result = Range("E" & I)
If result = "×" Then
If msg <> "" Then msg = msg & vbCrLf
msg = msg & Range("A" & I) & Range("B" & I)
End If
Next I
If msg <> "" Then
'メッセージボックスにA列の「名前」、「アイコン」を表示します。
MsgBox (msg)
End If
MsgBox "チェック結果は以上です"
End Sub
ありがとうございます。以下でやりたいことが実現できました。助かりました。
Sub チェッカーMsgbox01() 'セルの値とアイコンを表示する
Dim I As Long
Dim result As String
Dim msg As String
Dim MsgBoxVisible As Boolean
msg = msg & Range("A1") & vbCrLf
For I = 2 To 6 '2行目~6行目まで繰り返します 7行目以降は無視します
result = Cells(I, "E").Value
If result = "×" Then
'メッセージボックスに「×アイコン」と、E列に×が入った行の内容を表示します。
MsgBoxVisible = True
msg = msg & Cells(I, "D").Value & vbCrLf
'メッセージボックスに表示する内容に、A列「タイトル名」とB列「項目名」を結合した D列の内容を追加します。
End If
Next I
If MsgBoxVisible Then MsgBox msg, vbCritical
MsgBox "チェック結果は以上です"
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) WORD VBA プログラム修正をお願いします。 2 2024/04/25 23:43
- Visual Basic(VBA) VBAに関して 2 2023/11/09 20:57
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Visual Basic(VBA) Excelマクロで空白セルの大小比較処理について 1 2023/09/29 10:24
- Visual Basic(VBA) Excelのマクロについて教えてください。 5 2024/11/14 09:43
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) Excel マクロについて詳しい方、ご教示ください。 『行数が毎回変わる元データの、A列に「1」と入 2 2024/11/23 01:53
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/18 09:20
このQ&Aを見た人はこんなQ&Aも見ています
-
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
Vba FileSystemObject オブジェクトに使って拡張子、BaseNameを取り出す
Visual Basic(VBA)
-
-
4
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
5
改行文字「vbCrLf」とは
Visual Basic(VBA)
-
6
エクセルの改行について
Visual Basic(VBA)
-
7
【マクロ】開いているブックの名前を取得した後、名前をセルに1つづつ入力するには?
Visual Basic(VBA)
-
8
不要項目の行削除方法について
Visual Basic(VBA)
-
9
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
10
算術演算子「¥」の意味について
Visual Basic(VBA)
-
11
VBAの「To」という語句について
Visual Basic(VBA)
-
12
エクセルVBA 段落番号自動取得方法
Visual Basic(VBA)
-
13
vbsでのwebフォームへの入力制限?
Visual Basic(VBA)
-
14
【マクロ】A列にある、日付(本日:4月17日)を検索し、セルを選択するには?
Excel(エクセル)
-
15
【ExcelVBA】5万行以上のデータ比較の効率的な処理方法について
Visual Basic(VBA)
-
16
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
17
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
18
VBAのループ処理について教えてください
Visual Basic(VBA)
-
19
VBAのエラー表示の対処法について
Visual Basic(VBA)
-
20
VBAで特定の文字が入った行をコピーして貼り付けたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】オートフィルター を...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
ワードの図形にマクロを登録で...
-
VBAでFOR NEXT分を Application...
-
算術演算子「¥」の意味について
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
質問58753 このコードでうまく...
-
vbaマクロについて
-
Vba Array関数について教えてく...
-
testファイル内にある複数のpng...
-
ダブルクリックで貼り付けた画...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】変数を使った、文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報