
複数列を指定、3列含む行が空白だったら背景色をつける。
質問を見てくださってありがとうございます。
VBA初心者です。
5行目をスタートとして、
行をひとつひとつ見て、
F、G、H列が全て空白だった場合は背景を黄色にする。
おわったら次の行へ、
というマクロを作りたいのですが、
どうも tblrow でエラーがおきます。
わかる方、教えてください。
maxrow = sh.Cells(Rows.Count, "B").End(xlUp).Row 'B列の商品名
For k = 5 To maxrow
Set rng = Range("F:H")
Set tblrow = k & rng
If tblrow <> "" Then
tblrow.Interior.Color = vbYellow
End If
Next k

No.4ベストアンサー
- 回答日時:
こんにちは
変数shに何が入っているのか不明なのと、操作の対象がどのシートなのか不明確なコードになっていますが、それで問題が出ていないのならActiveSheetに対する操作を行いたいのかなと、勝手に解釈しました。
また、どのような状態のシートに対して処理を行うのか不明ですが、
ご提示のコードでは「背景色を付ける」ことしかしていないようなので、既に色がついているセルがある場合には、仮に空白では無くても色がついたままになります。
ですので、事前にクリアしてから処理を行うものと、これまた勝手に解釈しました。
・・・と、勝手な解釈だらけですが、こんな感じでは?
Set sh = ActiveSheet
maxrow = sh.Cells(Rows.Count, "B").End(xlUp).Row
For k = 5 To maxrow
Set rng = sh.Cells(k, 6).Resize(, 3)
rng.Interior.Pattern = xlNone
If Application.CountBlank(rng) = 3 Then rng.Interior.Color = vbYellow
Next k
fujillinさん
色々不手際が・・申し訳ありません。
それなのに想像でも私のやりたいことを汲んでくださり、ありがたい限りです。
勝手な解釈といえども完ぺきにアドバイスいただけて感動です。
やりたいことがそのまま叶いました。
Application.CountBlank、覚えます。
ありがとうございました。
No.3
- 回答日時:
シート名は任意です。
初級レベルなのでミスってたらスル~してください。
Sub try()
Dim sh As Worksheet
Set sh = Sheets("Sheet1") '★取り敢えず
Dim r As Range, rr As Range
With sh
Set rr = .Range("B5", .Cells(Rows.Count, "B").End(xlUp))
End With
For Each r In rr
r.Range("E1:G1").Interior.ColorIndex = _
IIf(Join(Array(r.Range("E1").Value, r.Range("F1").Value, r.Range("G1").Value), "") = "", 6, xlNone)
Next
Set rr = Nothing
End Sub
めぐみんさん、わかりやすくコードを書いてくださってありがとうございます。
お答えくださることで私の知識とモチベーションになります。
色んな書き方があるのだと学べて勉強になるのでありがたいです。
また質問した際にはどうぞよろしくお願いいたします
No.2
- 回答日時:
最初の行のシート名は変えて下さい。
<コード>
Sub ggrks()
Dim ws As Worksheet: Set ws = Thisworkbook.Sheets("")
Dim tbl As Range
Set tbl = ws.Range("F5:H" & ws.Cells(Rows.Count, "B").End(xlUp).Row).Resize(, 7)
Dim r As Long, c As Long
For r = 1 To tbl.Rows.Count
If tbl(r, 1) & tbl(r, 2) & tbl(r, 3) = "" Then
ws.Range(tbl(r, 1), tbl(r, 3)).Interior.Color = vbYellow
End If
Next
End Sub
お早い回答ありがとうございます。
tblrowはrangeでした。でも色々組み合わせが悪かったのかエラーが出続けて..
オブジェクトをなんとなくで扱っていましたが、今回でさらに勉強になりました。
コードまでありがとうございます。
.Resizeも、初めて触れたので参考になりました!
ggrksdqnさんにはたびたび参考にさせていただいております。
いつもコードの名前であわわ…と思いながら、
クスッとしてしまいます。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
VBA 実行時エラー1004 rangeメ...
-
Excel VBA オートフィルターで...
-
VBA 空白行に転記する
-
Excel 条件一致の別シートの行...
-
Changeイベントで複数セルへの...
-
VBAでEXCELから固定長...
-
100万件越えCSVから条件を満た...
-
VBA詳しい方、アドバイス願いま...
-
VBA別シートの最終行の次行へ転...
-
ExcelのVBAでグループ分けしたい
-
エクセルで離れた列を選択して...
-
Excelのフィルター後の一番上の...
-
VBA シートをコピーする際に Co...
-
特定の文字がある行以外を削除...
-
VBAマクロ実行時エラーの修正に...
-
VBA 別ブックからコピペしたい...
-
Excel UserForm の表示位置
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
EXCELのSheet番号って変更でき...
-
VBA 空白行に転記する
-
Count Ifのセルの範囲指定に変...
-
VBA別シートの最終行の次行へ転...
-
楽天RSSからエクセルVBAを使用...
-
100万件越えCSVから条件を満た...
-
VBAで変数の数/変数名を動的に...
-
Changeイベントで複数セルへの...
-
アクセスからエクセルへ出力時...
-
VBAでEXCELから固定長...
-
ExcelのVBマクロを、バックグラ...
-
VBA 別ブックからの転記の高速...
-
Excel VBA オートフィルターで...
-
【VBA】データを各シートに自動...
-
複数シートの複数列に入力され...
-
グラフマクロで系列を変数にす...
-
Unionでの他のシートの参照につ...
-
Excel2013で切り取り禁止
おすすめ情報