• 締切済み

セルを塗りつぶす

マクロでE行のデータが無いセルを特定し黄色で塗り潰すとしたのですが止まってしまします。 下記をどのように修正したらいいですか。 空白セルを塗る Dim int_row As Long Dim int_cnt As Long int_cnt = 1 Do Until Range("B" & int_cnt) = Null Or Range("B" & int_cnt) = "" int_cnt = int_cnt + 1 Loop int_row = int_cnt - 1 If .Range("E" & int_cnt) = "" Then .Range("E" & int_cnt).Interior.ColorIndex = 65535 End If

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

間違いが多いですね もう少し、VBAの理解を深めれば よい結果になると思いますよ >下記をどのように修正したらいいですか。 なるべく、コードをいかそうと思ったのですが 使用できたのが一行しかありませんでした Sub test() Dim int_row As Long 'Dim int_cnt As Long 'int_cnt = 1 '繰り返し処理は for~next をお勧めします 'do~loop は、初心者には難しいと思います 'B列最終行まで繰り返し処理を行う For int_row = 1 To Cells(Rows.Count, 2).End(xlUp).Row 'Do Until Range("B" & int_cnt) = Null Or Range("B" & int_cnt) = "" 'int_cnt = int_cnt + 1 'Loop 'int_row = int_cnt - 1 'If .Range("E" & int_cnt) = "" Then '.Range("E" & int_cnt).Interior.ColorIndex = 65535 'End If 'E列の値で空白ならばセルの色を黄色に If Range("E" & int_row).Value = "" Then Range("E" & int_row).Interior.ColorIndex = 6 Next int_row End Sub 参考まで

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>黄色で塗り潰すとしたのですが止まってしまします。 ”止まってしまう”という表現が不明ですが・・・。 条件設定に誤りがあって無限ループになっているとか? 普通は、Do ~ Loop 内で連続して判定して塗りつぶしを行うプログラムでないと正しく動作しないと思いますが? 提示されたものだと、一つだけ塗りつぶしして終わりですよね。 ループ文の使い方を理解されていますか? Do '最下行なら終了 '空白判定 '塗りつぶし 'カウントアップ Loop 

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

掲載されたコードの記述ミス等は別にして .ColorIndex値は、-1から56で動きました。 自動設定とか色なしの設定は、ColorIndexプロパティのヘルプで確認してください。 65535という数値はRGB値だと思います。 その場合はColorプロパティになります。 .Interior.Color = 65535 Excel2007で確認しています。

関連するQ&A