商品の品番やカテゴリー、売上などを記載した表が
A~O列まであります。
A列 品番
B列 納入先
C列 売上
O列 OK、もしくは空白
B列とC列は別しーとからvlookupで引き出し
それを値として張り付け直しているため
ところどころ#N/A が文字として入っています。
O列にOKと入っている時
B列が空白、もしくは#N/Aと入っている際に
[確認してください]とメッセージボックスを出すにはどうしたら良いでしょうか。
過去履歴を参照して以下のようにしましたが
上手く作動しません。
どうぞよろしくお願いします。
sub macro1()
dim i as long
dim mes as string
dim lastrow as long
range("B:C").interior.colorindex = xlnone
lastrow = range("O65536").end(xlup).row
for i= 1 to lastrow
if cells(i, "O") = "OK" and cells(i, "B") = "" then
mes = mes & vblf & "売上" & cells(i, "B") & "確認してください"
cells(i, "B").interior.color = vbred
end if
next i
msgbox mid(mes, 2)
mes = ""
for i = 1 to lastrow
if cells(i, "O") = "OK" then
if cells(i, "B") like "*N*" then
mes = mse & vblf & "売上" & cells(i, "B") & "確認してください"
cells(i, "B").interior.color = vbred
end if
end if
next i
msgbox mid(mes, 2)
end sub
No.1ベストアンサー
- 回答日時:
どっちかというと、マクロとしては、別々にするか、まとめて一緒にしてしまったほうが良いような気がします。
空白を黄色、エラーを赤にしました。参考にしてみてください。
''//
Sub Macro1()
Dim i As Long
Dim mes As String
Dim LastRow As Long
Range("B:C").Interior.ColorIndex = xlNone
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
If Cells(i, "O").Value = "OK" And Cells(i, "B").Text = "" Then
mes = mes & vbCrLf & "売上: " & Cells(i, "B").Address(0, 0) & "空白を確認してください"
Cells(i, "B").Interior.Color = vbYellow
End If
Next i
If Len(mes) > 4 Then
mes = mes & vbCrLf
End If
For i = 1 To LastRow
If Cells(i, "O") = "OK" Then
If IsError(Cells(i, "B")) Then
mes = mes & vbCrLf & "売上: " & Cells(i, "B").Address(0, 0) & "エラーを確認してください"
Cells(i, "B").Interior.Color = vbRed
End If
End If
Next i
MsgBox Mid(mes, 2)
End Sub
お二人ともありがとうございました!
早々に答えていただき、お二人ともベストアンサーにしたいのですが
WindFallerさんが本当に理想通りだったので
ベストアンサーにしたいと思います。
ありがとうございました!
No.2
- 回答日時:
こんな感じではいかがでしょうか?
--------------------------------------------------------------------------------
Sub macro1()
Dim i As Long
Dim lastrow As Long
Dim エラー有 As Boolean
Range("B:C").Interior.ColorIndex = xlNone
lastrow = Cells(Rows.Count, 15).End(xlUp).Row
For i = lastrow To 1 Step -1
If Cells(i, "O").Value = "OK" Then
If IsError(Cells(i, "B").Value) Then
エラー有 = True
Cells(i, "B").Interior.Color = vbRed
Cells(i, "B").Select
Else
If Cells(i, "B").Value = "" Then
エラー有 = True
Cells(i, "B").Interior.Color = vbRed
Cells(i, "B").Select
End If
End If
End If
Next i
If エラー有 Then
MsgBox ("確認してください")
End If
End Sub
--------------------------------------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IIF関数の使い方
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
エクセルVBA シートモジュール...
-
データグリッドビューの一番最...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
vbaでシートより100より大きい...
-
Changeイベントでの複数セルの...
-
VBA UserFormからの転記で
-
VBA 値と一致した行の一部の列...
-
【VBA】2つのシートの値を比較...
-
エクセルVBAにて =A1=B1とすれ...
-
targetをA列のセルに限定するに...
-
VBA 何かしら文字が入っていたら
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
VBAのコードを教えてください
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
エクセルvbaについて
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
VBA UserFormからの転記で
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
VBマクロ 色の付いたセルを...
-
VBAで指定範囲内の空白セルを左...
おすすめ情報