• 締切済み

単一セルではなく範囲に対して条件付き書式を設定するとき

条件付き書式について質問です。 A7:M15の範囲を「色範囲」と名前定義しているとして、 その範囲の中で「あ」から始まる文字列の場合、 フォントの色を赤色に設定したいのですが、 1つ1つのセルに対して条件付き書式を設定していくのであれば当然出来きるのはわかります。 Workbooks(book1).Sheets(sheet1).Cells("A7").FormatConditions.Add Type:=xlExpression, Formula1:= _ "=COUNTIF(A7,""あ*"")" .FormatConditions(1).interior.colorIndex = 6 Workbooks(book1).Sheets(sheet1).Cells("A8").FormatConditions.Add Type:=xlExpression, Formula1:= _ "=COUNTIF(A8,""あ*"")" .FormatConditions(1).interior.colorIndex = 6 ・・・ ・・・ ・・・ しかし、 範囲全てに対して下記の設定をしてVBAを起動 Workbooks(book1).Sheets(sheet1).Cells(色範囲).FormatConditions.Add Type:=xlExpression, Formula1:= _ "=COUNTIF(A7,""あ*"")" .FormatConditions(1).interior.colorIndex = 6 エクセル側でA8のセルの条件付き書式をみると、 =COUNTIF(A8,"あ*") と自動で行(列)が変わっているのかわかりません。 要は名前定義をした範囲選択、行番号選択、列番号選択どの場合でも、 左上に表示されたセル座標をCOUNTIFの文字列の引数に設定すればいいのでしょうか。 よろしくお願いいたします。

みんなの回答

回答No.1

まず、=COUNTIF(A7,""あ*"")について これは、0または1を返します、多分。 ちなみに、True(真)は-1で、Falseは0です。 Type:=xlExpressionは、真(-1)の時、書式を実行するので、「=COUNTIF(A7,""あ*"")」では、その書式は実行されないと思います。 少なくとも、「=COUNTIF(A7,""あ*"")=1」でなければならないと思います。 話は戻って、A7やA8を個別に指定しなければならないと言うことについて セルの指定の仕方にはA1形式とR1C1形式と言うのがあって、R1C1形式は自分自身からの相対位置でセルを指定します。 で、「=COUNTIF(RC,""あ*"")」とすると、自分自身についてになります。 と言う訳で、こんなのではどうでしょう With Workbooks("Book1").Sheets("Sheet1").Range("A7:M15") '好きな範囲で .FormatConditions.Delete '既に設定されている書式があったらクリア .FormatConditions.Add Type:=xlExpression, Formula1:="=COUNTIF(RC,""あ*"")=1" 'R1C1参照形式で指定 .FormatConditions(1).Font.ColorIndex = 3 '好きな設定 End With p.s. 「あ」から始まる文字列というなら、「=Left(RC,1)=""あ""」でも良いんじゃないかと思います

rufas
質問者

お礼

ありがとうございます!! どちらかとゆうと、他の処理でもセル座標をループでまわしたりしてるので、 R1C1形式でマクロを組むことが多く、 過去質問や勉強サイトはほとんどがA1形式のものでしたので、 なかなか参考になるものがなかったので、 RCは自分自身についてだと知り、 非常に助かりました。

関連するQ&A

専門家に質問してみよう