[[20040302104138]] 『VBA:塗りつぶしセルの削除』(POPO) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA:塗りつぶしセルの削除』(POPO)

sheetには削除したいセルを条件付書式を使って塗りつぶしてあります(色番号は3です)。
そして、「塗りつぶしたセルを検索して削除する」という作業をマクロによって行いたいと考え、以下のようにマクロを組んでみました。

 Sub Macro1()

 With Application.FindFormat.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ColorIndex = 3
 End With
 Application.FindFormat.Locked = True
 Application.FindFormat.FormulaHidden = False
 Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=True).Activate
    Selection.Delete Shift:=xlToLeft

 End Sub

(上記のうち、最後の「Selection.Delete Shift:=xlToLeft」以外は

http://support.microsoft.com/default.aspx?scid=kb;ja;282153を参考にしました)

しかし実行すると
「実行時エラー '91':
 オブジェクト変数または With ブロック変数が設定されていません。」
と表示されてしまいます。
これはマクロの組み方が誤りなのでしょうか。
それとも条件付書式で塗りつぶしたセルは検索できないのでしょうか。
皆様のご意見をお聞かせください。
よろしくお願いします。


 条件付書式で塗りつぶしたセルと、セルの塗りつぶしは別物です。
 1箇所のセルに設定して、試してみると分かると思います。

 なので、その条件付書式の条件で検索して削除するしかないと思います。

  (INA)

INAさん、早速のご返答ありがとうございました。
たしかに単なるセルの塗りつぶしに対しては動作しますね。

> なので、その条件付書式の条件で検索して削除するしかないと思います。
とのことですが、削除対象を判別する条件付書式が数種類あるため、どうしても「条件付書式で塗りつぶした色」に基づいて検索をしたいのです。
重ねての質問で申し訳ありませんがそのようなことは可能なのでしょうか。
ご教授いただければ幸いです。
よろしくお願いします。

 (POPO)


 >条件付書式が数種類
 条件付き書式で対応できないときは、VBAを使うのですから
 「条件付き書式で設定している」条件であれば、VBAでも当然書けるはずです。

 対象範囲をfor each〜next でループさせて、
 if文 などを用いて「条件付き書式で設定している」条件で、判別すれば良いのです。

  (INA)

INAさん、せっかくご返答いただいたのに返事が遅くなりましてすみません。
ループやIFはあまり使ったことがないのですがこれを機に勉強してみたいと思います。
どうもありがとうございました。
(POPO)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.