• ベストアンサー

VBAで特定の条件のセルのみクリアにする

VBAでセルに入力された内容をクリアにするマクロをボタンに登録しているのですが、 対象セルが増えていき都度書き換えるのが面倒になりました。 例えば罫線が太枠のセルのみクリアの対象にしたいです。 もしくは、セルが●●色で塗りつぶされているセルを対象にする。 参考になるサイトでもよいので宜しくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! データは数式で表示されているのではなく、実データだとします。 データが入っているセルすべてが対象となります。 (1)仮に「赤」で塗りつぶされている場合は Sub Sample1() Dim c As Range For Each c In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants) If c.Interior.ColorIndex = 3 Then '←赤の場合 c.ClearContents End If Next c End Sub ※ 実際の色は「カラーインデックス」で検索してみてください。 (条件付き書式で色付けされている場合は反応しません) (2)罫線が「太線」の場合は Sub Sample2() Dim c As Range For Each c In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants) With c.Borders If .LineStyle = xlContinuous And .Weight = xlMedium Then c.ClearContents End If End With Next c End Sub ※ 線の太さは「マクロの記録」等で調べてみてください。 こんな感じではどうでしょうか?m(_ _)m

oimoita
質問者

お礼

ご回答ありがとうございます。 無事に解決することができました。 太枠(極太枠)をクリア対象とすることにしたので Sub Sample2() Dim c As Range For Each c In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants) With c.Borders If .LineStyle = xlContinuous And .Weight = xlMedium Then c.ClearContents End If End With Next c End Sub いただいた上記コードを Weight = xlThick Then と書き換えました。 ありがとうございます。

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率65% (1624/2464)
回答No.2

No1補足です。 色は以下のような指定もできます。 Interior.Color = RGB(0, 0, 255) それぞれの数値は塗りつぶしたセルの書式設定で「塗りつぶし」→「その他の色」→「ユーザー設定」のところでカラーモデルをRGBにするとそれぞれ赤(R)緑(G)青(B)の数値が確認できます。バージョンによっては単純な青が塗りつぶしの選択肢の中になく、選択肢にある青っぽい色を選択している場合、上記のRGB指定でないと定数vbBlueでは検索しても認識してくれません。 セルの書式(背景色・パターン)に関する参考ページ http://www.239-programing.com/excel-vba/basic/basic067.html

  • kkkkkm
  • ベストアンサー率65% (1624/2464)
回答No.1

選択した範囲のセル範囲で塗りつぶしが赤のセルのデータをクリアする単純な例です。ただし、条件付き書式で塗りつぶされているセルは以下の方法では見つかりません。 条件付き書式の取得は以下のページを参考にしてください。 VBA セルの条件付き書式を取得する http://www.tipsfound.com/VBA/07019.vbhtml Sub Example() Dim c As Range For Each c In Selection If c.Interior.Color = vbRed Then c.ClearContents End If Next End Sub

oimoita
質問者

お礼

ご回答ありがとうございます。 無事に解決することができました。 ありがとうございます。

関連するQ&A

  • VBAのセルのClearについて

    VBA超初心者で、困っていることがあります;; たとえば、プログラムを実行したら、セルの「A1~D3」の範囲をクリアするという物があったとして、 その他の条件が以下のようになっています。 (1)クリアしても、セル内の数式を保持 (2)クリア対象のセルの罫線は残す 私は、以下のように記述したのですが、数式は残るのですが罫線が残りませんでした。 Sheets("シート名").Range("A1:D3").ClearFormats 数式を保持し、罫線を残すようにするには、どのような記述をすれば良いのでしょうか。 以上、よろしくお願いいたします。

  • 入力セルから入力セルに罫線をひく

    BBAでお聞きします。 セルB3「あ」が入力してあり、F5に「い」が入力してあるとします。B3;F5まで罫線をマクロ設定後、ボタンを作成して記入できますでしょうか。 Excelで「B3」を選択後、shift+ctrl+endで「F5」まで指定後、相対マクロで記憶させます.その後、1度クリアー後、再度「B4」から「F4」まで選択しますとF5まで罫線が引かれます。 記入セルから記入セルまでの罫線の引く、VBAをご教授ください。 宜しくお願いします。

  • Excel VBA 特定の条件の時に指定されたセルのクリア

    お世話になります。 Office2007 WinXPです。 VBAの勉強を始めたばかりです。 よろしくお願い致します。 E12~I12までに数字が入ります。 その数字を元にE13~I13までとE14に○か×か判定を入れてます。 VBAで動かしたいセルはF20~I20です。 E14が×の○の場合、F20~I20は全てセルのクリア Range("F20:I20").Clear 後は個別にF14が○ならF20のセルをクリア G13が○ならG20のセルをクリア H13が○ならH20のセルをクリア I13が○ならI20のセルをクリア J13が○ならJ20のセルをクリア 関数のIF文ではセルのクリアができないので… 条件は =IF(OR(E14="○",F13="○"),"データクリア","入力して下さい") 参考で見つけたHPで If 条件式 Then 判断結果がTrueのときに実行する処理 Else 判断結果がFalseのときに実行する処理 End If どのように当てはめたらよいのかがわかりません。 ご教授の程よろしくお願い致します。

  • 特定の値のセルに罫線を引くマクロ

    Excelのマクロの質問です。 セルの値が特定の値の時に太枠の罫線でそのセルのみを囲むマクロを作りたいのですが、どのように記述したらよいのでしょうか? 10×30ぐらいの範囲に複数個該当セルがあります。 値は「休」、「土」などの漢字です。

  • 【VBA】条件を満たしたセルを塗り潰し

    VBAで下記のようにしたいのですが、どのようにすれば良いでしょうか?      A 1    100 2    110 3    120 4    130 5    140 6    150 7    160 8    170 9    180 【条件】この場合、A1:A9の範囲内でB1の値を超える値が入力されているセルを黄色で塗りつぶす ※前提として、B1に150と入力されているとします 上記のようなVBAを作成したいと思っています。 この場合、塗りつぶしの対象となるセルはA7,A8,A9となります。 条件付き書式で対応できるのですが、Excel2007で作成したファイルをExcel2003で開くと条件付き書式が反映しませんでしたので、VBAで対応しようと思いました。 宜しくお願いします。

  • VBA 条件の一致する行の特定のセルの削除について

    VBA初心者です。よろしくお願いします。 <sheet1>     A  B   C  D  E 1   1 1211 佐藤 10 100 2   2 1344  山田 25 150 3   3 1522 田中  5 80 4   4 1655  高橋 35 200 ・ ・ 100 100 3682 小林 40 300 <sheet2>    A   B 1 1344 2 この様な表があったとします。(見辛くてすみません) "sheet2"A1セルに入力した内容と同じ内容を"sheet1"のB列から検索し、その行のB~Eのセルを削除するにはどのようにしたら良いでしょうか? 例えば"sheet2で"「1344」と入力した場合、"sheet1"の「1344」のある2行目のB~Eのセルを削除するといった感じです。 削除後の空白は詰める必要はなく、マクロを記録させるボタンは"sheet2"に貼り付けます。 色々調べましたがどうにも分からない為質問させていただきます。 よろしくお願い致します。

  • 【Excel】色が付いているセルの値をクリアしたい

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

  • EXCEL2000ある条件で指定セルへ移動させたい

    EXCEL2000を使用しています。 行いたいことは、例えば、a2に"対象"と入力したら、d2にセルが飛び、セルの色が赤くなり、"対象にした理由を入力ください"とメッセージを出したいです。 VBAでも構いませんが、あまり得意ではなので、なるべくVBA以外の方法をお教え頂ければと思います。 どうぞよろしくお願い致します。

  • 【エクセルVBAについて】セルをランダムに選択コピーし、別シートにランダムに貼り付けたい。

    エクセルのVBAについてあまり詳しくないので質問したいのですが、 件名のようなことをマクロで行いたいと思っています。 詳しく説明しますと、 シート2のA1:R3の54マスのセルにそれぞれ文字が入っています。 それを3×3、計9マスで1セットに罫線で区切っています。(全部で6セット) |あああ|いいい|ううう|えええ|おおお|かかか| |あああ|いいい|ううう|えええ|おおお|かかか| |あああ|いいい|ううう|えええ|おおお|かかか| このような「あ」~「か」のブロックのうち、1つのブロック(9つのセル)を、 ランダムにコピーして、シート1の領域内(A1:U24)のどこかに、 ランダムに貼り付けるようなことは、マクロで可能でしょうか? できればそのマクロをボタンに登録して使いたいと思っています。 ご教示いただけると大変助かりますので、よろしくお願いします。

  • VBAマクロで特定の文字を相対座標で複数セルへ記入

    VBA初心者です。 google検索してみても、イマイチ解らなかったので教えてください。 例として、マクロを実行させると、現在選択中のセル(ここではA1)に 1を入力し、隣のセル(B1)に0を入力できるようなマクロをつくり ボタン化しようと思っているのですが 肝心のマクロがまだ理解出来てなくて困ってます。 一応、自分でやってみたりしたくて試してはいるのですが 単純に、カーソル移動で Range("A1").Offest (+1.0)      ;右隣のセルへ移動 これではダメなんですよね?

専門家に質問してみよう