[[20021016150753]] 『条件付き書式で色が付いたセルを判別したい』(老人ライダー) ページの最後に飛ぶ

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

 

『条件付き書式で色が付いたセルを判別したい』(老人ライダー)

セルに入力された内容とか、セルA1とB1の関係などのチェックを条件付き書式で実施しエラー場所の判別をしやすくする為に色を付けた時、その色付セルの有無をマクロで判定したい。

具体的例としては・・・

 列Aに電話番号 列Bは氏名 とした時

 ・列Aに入れた電話番号文字に対し半角と全角が混在したら該当セルがエラーで色が付く

 ・列Aに電話番号が入っており対応するB列セルの氏名が未入力なら対応未入力B列セルがエラーで色が付く

上記例の様な条件で件数が多くなると行番が若い(最初の方の)データは画面スクロールで隠れて見えなくなっているので、マクロでエラー(色が付いたセル)の有無のチェックをかけたいのです。(エラー条件そのものをマクロに組入れるとチェック条件変更毎にマクロ変更がともなうので、あくまでも条件付き書式で表示された状態をマクロでチェックしたいのです)

ご教授の程、宜しくお願いいたします。 //以上


 みやほりんが 未解決ログ解消を目的に 2006/03/22 19:00 ごろ、投稿しました。
 トピ主の[老人ライダー]さんの投稿は2002/10/16 15:07:53でした。
 
>エラー条件そのものをマクロに組入れるとチェック条件変更毎にマクロ変更がともなうので
これはそのとおりだと思いますが、半角全角混在のデータをどちらかに統一するような事態が頻繁に発生するなら、
特化したマクロを作っておいて、変換処理してしまったほうが良いでしょう。条件付書式で判断した上で手作業で
やるのも大変です。一応、下記はA列の文字列を半角に変換してしまうもの。
 
 Dim C As Range
 Dim i As Long
 With ActiveSheet.Range("A1").CurrentRegion
     i = .Rows.Count
     For Each C In ActiveSheet.Range("A1").Resize(i, 1)
         C.Value = StrConv(C.Value, vbNarrow)
     Next C
 End With
 
あるいは入力規則で全角もしくは半角での入力を強制する方法もあるでしょう。
 
さて、
条件付書式で設定された条件式をマクロの中だけで判断処理するのは困難です。まず、入力されている文字列がどん
な条件式かをマクロの中で判断する仕組みを作らないといけません(考えたくないです)。 全てマクロの中だけ
ででやるよりは、条件付書式の条件式を作業列などへ代入してそこで判断したほうが楽です。
が、
マクロでシートへ条件式を書き出すのなら、最初からシートへ条件式を書いておいたほうが楽ではないでしょうか。
 
以下、設計例。
A1:F100 へ入力されたリストで、1行目は見出し。データは2行目からとします。
作業列を3列用意します (G、H [、I] 列とします)。
 
[老人ライダー]さんの提示された条件を例に取ります。
条件付書式の設定される範囲を範囲選択し、
条件1に入力されている下記数式を G2 へ入力し、G100までフィル
=LEN(A2)<>LENB(A2)
条件2に入力されている下記数式を H2 へ入力し、H100までフィル
=AND(A2<>"",B2="")
[条件3があれば同様に数式を I2へ入力、I100までフィル]
 
条件1、条件2[、条件3]の数式をそれぞれ=$G2 =$H2 [=$I2]とします。
 
G、H [、I]列を範囲選択し、データ>フィルタ>オートフィルタ として、
それぞれの列でドロップダウンリストから TRUE を選択すると条件付書式で書式変更されたセルが抽出できます。
作業列に条件付書式の条件判断式を出すことで 条件判断式の簡単な変更と抽出を実現できるのではないかと考えます。
 
ちなみに、条件判断式を下記のようにすれば、
=OR(LEN(A2)<>LENB(A2),AND(A2<>"",B2=""))
作業列をひとつにできますし、条件付書式の条件判断式もひとつにできますが、「どの条件でエラーになっているか」
がわかりにくくなる可能性はありますので、それぞれに対応する作業列を設けるほうが作業上は便利に思えます。
 
(みやほりん)(-_∂)b

コメント返信:

[ 一覧(最新更新順) ]


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