プロが教える店舗&オフィスのセキュリティ対策術

Excel2003を使用しています。
『D8:J40の範囲で色が付いているセルの値をクリアする』というマクロを作りたいのですが、“セルに色がついていたら…”という条件をどのように書いたらいいのかがわからず、つまづいています。
参考までにコードを書いていただけると助かります。よろしくお願いします。

A 回答 (2件)

こんにちは。



Sub Sample()
  Dim C As Range
  For Each C In ActiveSheet.Range("D8:J40")
    If C.Interior.ColorIndex <> xlNone Then
      C.ClearContents
    End If
  Next
End Sub

この回答への補足

KenKen_SPさん、こんにちは。
数ヶ月前になりますが、工事写真帳のマクロを作っていただきました。このとき初めてマクロを使ったので、よく覚えています(^^)

>If C.Interior.ColorIndex <> xlNone
『セルに色が付いていたら…』とばかり考えていたので、こういうふうにすればいいことに気づきませんでした。ありがとうございました!

もしよかったら、教えていただきたいのですが。。。
ここで、いつもお世話になっていて、回答をいただいたときに
>Dim C As Range
を何度も目にしているのですが、これはどういうことを表しているのでしょうか?
マクロを勉強中ですので、こんなときに使うとか補足をいただけると嬉しいです。

補足日時:2006/11/08 11:50
    • good
    • 0

> ...よく覚えています(^^)



覚えていただけて光栄です!^^

> >Dim C As Range
> を何度も目にしているのですが、これはどういうことを表しているのでしょうか?

Dim は変数を宣言する際に使うキーワードです。

  例) Dim 変数名 As 変数の型

のように使用します。ご質問の例では C という変数を Range という型で使い
ますよ...という意味ですね。

変数の概念について説明するのは非常に大変なので、図解付きの他解説サイト
や書籍を見ていただく方がわかりやすいと思いますので省略させて下さい。

VB では必ずしも変数を宣言する必要はないのですが、宣言しておいた方が
次のメリットがあります。

  ・インテリセンス
   Visual Basic Editor でプログラムを書くとき、ある特定の変数の型に
   おいては、宣言しておくと入力候補が自動でポップアップ表示され、
   コードの記述で楽ができる。この機能のことをインテリセンスと呼びます。

  ・プログラム上のミスが発見しやすい
   変数を宣言すると決まった値しか代入できなくなりますので、想定外の値
   が代入された時点でエラーが発生します。つまり、デバッグし易いという
   ことです。
   
  ・実行速度
   長くなるので省略しますが、宣言した方がプログラムの実行速度の面で
   有利なのは確かです。

このような変数宣言のメリットがある一方で...

VB では変数の宣言が必須でないため、コードが長くなるのを嫌って、その必要性
を疑問に思う方は多いです。なぜなら、変数を宣言しなくてもそれなりに動いて
しまうからですね。

この VB の仕様には功罪があると思いますが、それがプログラムの敷居を低くする
という VB のメリットになっているのも確かで、結果多くの人が VB を趣味や仕事
で利用する機会が増えた一因になってます。

私は変数は必ず宣言しますが、このメリットを否定するつもりはなく、したがって、
変数を宣言するかしないかは個人の判断によると思ってます。

しかし、動けば良いと場当たり的なプログラムではなく、きちんと製作者の意図
通りの動作をする、エラー発生さえも想定できるといった

  「しっかりとしたプログラム」

を書くためには、変数の宣言をした方が良いのは言うまでもありません。
    • good
    • 2
この回答へのお礼

わかりやすく説明してくださり、ありがとうございます<(_ _)>
なんとなく想像はできたのですが、ずっと気になっていたので、スッキリしました!

お礼日時:2006/11/08 13:45

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

このQ&Aを見た人はこんなQ&Aも見ています