- ベストアンサー
VBAの質問です
コードがわかりません したい事 B1~B20のセルにはそれぞれ背景色がついてます 1つ1つ背景色を判別して 塗りつぶし無しのセルだけ残し それ以外は消す(値と塗りつぶし無しの状態にする) をするつもりですが出来ません 考えたコード sub test() dim i as variant for i =1 TO 20 if not cells(i,2)=interior.colorindex=xlone then i.clear next i end sub 勉強不足ですみません コードを書いてくれると助かります 回答お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Sub Test() For i = 1 To 20 If Cells(i, 2).Interior.Color > 0 Then Cells(i, 2).Clear End If Next i End Sub 説明しなくても、質問者なら、だいたい分かると思いますが、「Interior.Color = 0」が「塗りつぶしなし」ですから、「>0」の場合、と考え、そのセルを「Clear」して、すべての情報を削除しています。 質問者が何よりおかしいのは、「If」の中に「=」が2つ出てくることです。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
たとえば、A1:A5に塗りつぶし色書式を設定してない、初期状態的シートで 標準モジュールで Sub test01() For i = 1 To 5 MsgBox Cells(i, "A").Interior.ColorIndex Next i End Sub を実行すると「ー4142」とでます。 この意味などはGoogleで調べてください。 ーー そこで A1:A5範囲の1部のセルでで何か塗りつぶし書式を設定し 下記を実行 Sub test02() For i = 1 To 5 MsgBox Cells(i, "A").Interior.ColorIndex Cells(i, "A").Interior.ColorIndex = -4142 Next i End Sub 結果を確認。 これを応用したらよいのでは。 http://officetanaka.net/excel/vba/tips/tips148b.htm >「-4142」は、セルの背景色が「色なし」であることを示す、定数xlNoneの数値です ーーーー 不都合なケースが見つかれば、後学のため教えてください。