Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2010)
条件付き書式設定で 「…を含む」
投稿日時: 18/03/16 20:03:17
投稿者: takaisasking

条件付き書式の設定をVBAで行う場合で、
 
選択範囲のセルの文字に"「平成」を含む"場合、
 
そのセルに対して
色を付けたり、太字にしたりするにはどのようにしたらよいでしょうか。
 
ポイントは、条件を "…を含む" としたいのですが。
"…と等しい" ではなくて。
 
以下は、マクロの記録コードです。
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=""平成"""

回答
投稿日時: 18/03/16 22:15:03
投稿者: WinArrow
投稿者のウェブサイトに移動

VBAではないですが、
「数式を使用して〜〜」を選択します。
 
数式には
=FIND("平成",セル)
のようにン設定します。
 
この他にも
「〜を含む」の数式は
=COUNTIF(セル,"*平成*")
でも可能です。
 
この設定操作をマクロの記録を使うと、コードが作成できます。

回答
投稿日時: 18/03/17 10:54:26
投稿者: simple

「ルールの種類を選択してください」の二つ目の選択肢、
「指定の値を含むセルだけ書式設定」を使えばよいのでは?
「特定の文字列」「次の値を含む」を指定します。
この作業をマクロ記録してください。

回答
投稿日時: 18/03/17 14:07:41
投稿者: WinArrow
投稿者のウェブサイトに移動

simpleさん
 
「特定文字列」で設定できる
ということを、すっかり忘れていました。
 
因みに
特定文字列で「〜を含む」を設定した場合、次のような数式位なるようです。
Excel2003に変換したことから分かりました。
 
セルH3・・・"有楽町"を含む
と仮定した場合
 
「数式が」
式:=NOT(ISERROR(SEARCH("有楽町",H3)

投稿日時: 18/03/17 20:13:42
投稿者: takaisasking

ありがとうございます。思い通りのマクロの記録は取ることができました。
もうひとつ、ついでで申し訳ないのですが、
 
条件を「東京」と「群馬」の二つに増やした場合の記述を短くするにはどのように
直したらよいでしょうか。
 
以下はマクロの記述
 
Selection.FormatConditions.Add Type:=xlTextString, String:="東京", _
        TextOperator:=xlContains
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.14996795556505
    End With
    Selection.FormatConditions(1).StopIfTrue = False
     
     
    Selection.FormatConditions.Add Type:=xlTextString, String:="群馬", _
        TextOperator:=xlContains
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
     
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
     
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.14996795556505
    End With
    Selection.FormatConditions(1).StopIfTrue = False

回答
投稿日時: 18/03/17 20:28:27
投稿者: WinArrow
投稿者のウェブサイトに移動

>条件を「東京」と「群馬」の二つに増やした
AND
なの?
OR
なの?

投稿日時: 18/03/17 22:47:51
投稿者: takaisasking

OR の方です。
「東京」あるいは「群馬」のセルに太字・色付けです。
 
すみませんでした。

回答
投稿日時: 18/03/17 22:58:00
投稿者: WinArrow
投稿者のウェブサイトに移動

>=COUNTIF(セル,"*平成*")
これを応用すれば、いけると思いますよ。
 
たとえば
=OR(COUNTFIF(セル,"*東京*"),COUNTIF(セル,"*群馬*"))

投稿日時: 18/03/18 07:09:33
投稿者: takaisasking

WinArrowさん、ありがとうございました。
simpleさんもありがとうございました。
 
色々な発想があるなぁと思いました。
自分でも一つ思い出したやり方がこれでした。Array関数の使用。
 
    myArray = Array("東京", "群馬")
            For i = LBound(myArray) To UBound(myArray)
    Selection.FormatConditions.Add Type:=xlTextString, String:=myArray(i), _
        TextOperator:=xlContains
   ’途中省略
            Next i
また、よろしくお願いします。