• ベストアンサー

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 勉強不足ですみません コードを書いてくれると助かります 回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.1

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)
回答No.2

たとえば、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の数値です ーーーー 不都合なケースが見つかれば、後学のため教えてください。

関連するQ&A