複数列を指定、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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) 指定列最終行までのスペースを改行するVBAについて 2 2022/06/01 19:50
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
100万件越えCSVから条件を満た...
-
VBA別シートの最終行の次行へ転...
-
EXCELのSheet番号って変更でき...
-
【VBA】特定の条件でセルをコピー
-
楽天RSSからエクセルVBAを使用...
-
Excel VBAで、散布図のデータ範...
-
VBAのグラフに違うシートの...
-
Changeイベントで複数セルへの...
-
VBA 実行時エラー1004 rangeメ...
-
Unionでの他のシートの参照につ...
-
VBAでのピボットテーブルの範囲...
-
アクセスからエクセルへ出力時...
-
Excel VBA オートフィルターで...
-
VBAで変数の数/変数名を動的に...
-
複数列を指定、3列含む行が空白...
-
マクロ実行後に別シートの残像...
-
RemoveDuplicatesメソッドにつ...
-
エクセルマクロで自動転記について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
VBA別シートの最終行の次行へ転...
-
Count Ifのセルの範囲指定に変...
-
Changeイベントで複数セルへの...
-
VBAで変数の数/変数名を動的に...
-
VBA 別ブックからの転記の高速...
-
【VBA】特定の条件でセルをコピー
-
VBA 実行時エラー1004 rangeメ...
-
楽天RSSからエクセルVBAを使用...
-
Unionでの他のシートの参照につ...
-
複数シートの複数列に入力され...
-
ExcelのVBマクロを、バックグラ...
-
100万件越えCSVから条件を満た...
-
VBA Userformで一部別シートに...
-
Excel VBA オートフィルターで...
-
Excel2013で切り取り禁止
-
VBAでEXCELから固定長...
おすすめ情報