- ベストアンサー
マクロよ動け
VBA 難民です。 Excel で、左のセルが空白の場合、印刷文字を見えなくするつもりのマクロを作ってみましたが、知らん顔をされます。声の掛け方がまだよくわかってないのです。 こっちを向かせる方法を教えて下さい。よろしくお願いします。 Sub MacroWhiter() Dim a As Variant Dim b As Variant a = ActiveCell.Value b = ActiveCell.Offset(0, -1).Value '一つ左のセルの値 Range("B1").Activate 'ここから始める Do Until IsEmpty(ActiveCell.Value) '空きセルまで続ける If b = 0 Then 'ゼロの場合 ActiveCell.Font.Color = 2 '文字を白色にする ActiveCell.Offset(1, 0).Activate '下の行に移る End If Exit Do Loop '繰り返す a = ActiveCell.Value
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
いくつか、問題点がありました 1.Exit Do のためにループが1回しか回らない 2.a,b の取得がループ内に無いので、終了判定が出来ない 3.カラーの設定方法の間違い ------------------ Sub MacroWhiter() Dim a As Variant Dim b As Variant Range("B1").Activate 'ここから始める Do Until IsEmpty(ActiveCell.Value) '空きセルまで続ける a = ActiveCell.Value b = ActiveCell.Offset(0, -1).Value '一つ左のセルの値 If b = 0 Then 'ゼロの場合 ActiveCell.Font.ColorIndex = 2 '文字を白色にする End If ActiveCell.Offset(1, 0).Activate '下の行に移る Loop '繰り返す End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 他のみなさんが、回答してくれるので、あまり重複する内容は避けたいと思いますが、VBAの基礎では、何かの教本などに当てはめるようにして作ったほうがよいです。 それと、私も経験があるのですが、このような実践のレベルから入ると、マクロはさっぱり分かりづらくなるように思います。近道のようで遠回りになります。 なお、Activate と Select の若干のスピードの違いがあるようです。 また、Do ~ Loop も、For i =1 to ● ~ Next を経験された後のほうがよいと思います。 以下の「私のマクロ」のレベルは、VBAの学習を効率よくやって、だいたい2週間過ぎたぐらいです。(「私のマクロ」とも書かないと、とんでもない誤解した人がいますから、あくまでも、私の書いたもののみです。なお、実践では、With ActiveSheet ~ End With で、.Cells(...) という書き方にします。) 'Option Explicit Sub TestMacro() 'Cell's color changes to white color Dim i As Long Dim LastRow As Long 'C列の最後尾の行数を探す LastRow = Range("C65536").End(xlUp).Row '画面の更新をオフにします。 Application.ScreenUpdating = False For i = 1 To LastRow If Cells(i, 2).Value = 0 Then 'B列(2列目)のセルが0 なら、 Cells(i, 2).Font.ColorIndex = 2 '白に End If Next i Application.ScreenUpdating = True End Sub
お礼
Wendy02さん ありがとうございます。 むずかしいですね。 ScreenUpdatingというのを初めて知りました。
- bitsu
- ベストアンサー率34% (39/113)
こんにちわ。 文字色を変えるところの記述がたぶんまずいと思います。 Selection.Font.ColorIndex = 2 '文字を白色にする と書いたら動きませんかね?
お礼
bitsuさん ありがとうございます。 ColorIndexプロパティの"Index"が抜けていました。 Font.Color = 2 と書いた参考書もあったのですが。 参考書も2冊比べると全く違うことが書いてあったり、あまりあてになりませんね。
お礼
ASIMOVさん ありがとうございました。 教えていただいたとおり修正したらうまくいきました。