- ベストアンサー
エクセル2003 VBAマクロにて 背景色 白色の抽出
エクセル2003のマクロでセル背景色にて抽出したいのですが 背景色が白色(空白)の抽出ができません。 背景色別に 他セルに文字を自動記入したいのですが、 背景色が白(collorindex=0)の認識をしてくれません。 カラーインデックスでは、白は「0」か「2」になっているので その値でマクロを組んでも認識してくれないようです。 どのようにすればよいのでしょうか? 以下に私(素人)のマクロ文(一部)です。ご指摘お願い致します。 Dim 行番号 As Integer 行番号 = 7 Do Until Cells(行番号, 1).Value = "" If Cells(行番号, 9).Interior.ColorIndex = 5 Then Cells(行番号, 14).Value = "3号機" ElseIf Cells(行番号, 9).Interior.ColorIndex = 7 Then Cells(行番号, 14).Value = "4号機" ElseIf Cells(行番号, 9).Interior.ColorIndex = 0 Then Cells(行番号, 14).Value = "未加工" End If 行番号 = 行番号 + 1 Loop
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ヘルプのColorIndex プロパティには、 「xlColorIndexNone 塗りつぶしを行わない場合に指定します。」 とあります。 「0」ではなくて、「xlColorIndexNone」として下さい。 If Cells(行番号, 9).Interior.ColorIndex = xlColorIndexNone Then
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
何もセルのパターン色を設定してないセルのことが考慮されていなくて、見た目で「白色」と考えているのではないですか。 書式ーセルーパターンー色なし これはセルのパターン色の初期状態です。 Sub test01() i=1 MsgBox Cells(i, "a").Interior.ColorIndex End Sub を実行すると、-4142になります。 定数では xlColorIndexNone Sub test01() MsgBox Cells(1, "a").Interior.ColorIndex If Cells(1, "A").Interior.Color = vbWhite Then MsgBox "白です" End If End Sub というのもできます。 です。 白色は2です
お礼
ご回答ありがとうございます。 背景色なし と 白色の違いが理解できました。 大変勉強になりました。ありがとうございました
Private Sub CommandButton1_Click() Dim I As Integer For I = 1 To 8 Cells(I, 2).Value = Cells(I, 1).Interior.ColorIndex Next I End Sub 一度、A1~A7を白を含む7色に塗ってから上記コードを試して下さい。 白=2 透明色=-4142 ということが判ると思います。
お礼
回答ありがとうございます。 背景色なし(透明色) と 白色の違いが理解できました。 大変勉強になりました。ありがとうございました
お礼
早速プログラムを組んでみました。 上手くいきました! ありがとうございました。 プログラミングは始めたばかりで分からない事だらけです。 今後も質問させていただくと思いますが その節は宜しくお願いいたします ありがとうございました。