[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの塗りつぶしなしは16777215? 』(とんとん)
VBA で、塗りつぶしをしているセルだけにある処理をしたいと思い、
If Cell.Interior.Color <> xlNone Then '必要な処理 End If
としてみたところ、塗りつぶしをしていないセルもこの処理がされてしまいます。
塗りつぶしをしていないセルの Interior.Color の値を表示させると、 16777215 という値になったので、
If Cell.Interior.Color <> 16777215 Then '必要な処理 End If とすればとりあえずうまくいきました。
この 16777215 という数値はすべての Excel で共通なのでしょうか? (他のマシンや他のバージョンの Excel でも動くのでしょうか?)
また、このような即値でなく指定する方法はないのでしょうか。?
If Cells(1,1).Interior.Color.Index <> xlNone Then ~~~~~ これなら色が付いてなければいけると思います。
(川野鮎太郎)
軽く突っ込み(^^;;; If Cells(1, 1).Interior.ColorIndex <> xlNone Then (SoulMan)
>If Cell.Interior.Color <> 16777215 Then これはダメです。 16777215は「色無し」ではなく、vbWhite の定数値なので、 「色無し」と「白色」に設定されているセルを区別できません。
If Range("A1").Interior.ColorIndex = xlColorIndexNone Then MsgBox "ナシ" End If
If Range("A1").Interior.Color = vbWhite Then MsgBox "白かナシ" End If
(INA)
Color プロパティではなく、 ColorIndex プロパティにすれば、 xlColorIndexNone で「塗りつぶしなし」を指定できる、 16777215 は vbWhite の値である、vbWhite は塗りつぶしなしと白の 両方に該当、ということですね。了解しました。 川野鮎太郎さん、SoulManさん、INAさん、ありがとうございました。
ところで、xlColorIndexNone とか vbWhite のような、即値でない定数を 知るには、どこを調べればいいのでしょうか。?ヘルプのどこを見て良いか わかりませんでした。(とんとん)
ヘルプのColorIndex プロパティのページやオブジェクトブラウザです。 (INA)
オブジェクトブラウザというのは今までほとんど見たことがありませんでした。 ColorConstants などを見つけることができました。 ありがとうございました。(とんとん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.