プロが教えるわが家の防犯対策術!

塗りつぶしのない行を非表示にするマクロを作成したいのですが、
どこが問題で実行できないのかわかりません!

例えば8行目に対して実行したい場合を教えてください!

ちなみに自分で作成したVBAはこんな感じです。

Sub macro1()

If Rows("8:8").Interior.Color = xlNone Then
Rows("8:8").EntireRow.Hidden = True
End If

End Sub

よろしくお願いします。

ちなみにexcel2007です。

A 回答 (4件)

間違い:


If Rows("8:8").Interior.Color = xlNone Then

正解:
If Rows("8:8").Interior.colorindex = xlNone Then
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます!
試してみたところバッチリ実行できました!

ありがとうございました。
感動です!

お礼日時:2012/02/09 09:12

テスト環境が違うので値が違うかもしれませんが参考までに。


私の環境はエクセル2003ですが、テストしてみたところxlNoneの定数値は-4142で、
塗りつぶしのないセル(レンジ)のColorプロパティは16777215でしたので、
if文のxlNoneのところを16777215に変更してみてください。
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます!
N0.1の方の方法でうまくいきました。

ちなみに
If Rows("8:8").Interior.ColorIndex = 16777215 Then と
xlNoneのところを16777215に変更してみましたが、残念ながら実行できなかったです。

どうやら2003と2007では
環境が違うみたいですね。

お礼日時:2012/02/09 09:20

こんばんは!


すでに適切な回答が出ていますので、余計なお世話かもしれませんが・・・

If Rows(8).Interior.ColorIndex = xlNone Then
Rows(8).Hidden = True
End If

といった感じでもOKだと思います。
失礼しました。m(_ _)m
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。

こんなにシンプルにすることもできるんですね。

今後の参考にしたいと思います。ありがとうございました!

お礼日時:2012/02/09 09:32

まぁ実際にはこんな具合で。




sub macro1()
dim i as long
for i = 1 to activesheet.cells.specialcells(xlcelltypelastcell).row
rows(i).hidden = rows(i).interior.colorindex = xlnone
next i
end sub

範囲の取得はご質問の本題じゃないので,適宜工夫してください。
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。

実行してみましたが、びっくりです。
僕のやりたいことの最終形でした。。。

範囲の取得の命令文も知らなかったので今後の参考にさせていただきます。

感動です。

お礼日時:2012/02/09 09:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!