HOME > 即効テクニック > Excel VBA > 書式設定関連のテクニック > セルの内容を判断して、書式を設定する

即効テクニック

書式設定関連のテクニック

セルの内容を判断して、書式を設定する

( - )
●詳細●
サンプルでは、セルの内容をSelect Caseステートメントを使って判断しながら、セルの文字色やフォントサイズを変えるなど、いろいろな書式の設定をしています。
まず、データを入力するための列を一列挿入し、挿入された列にデータを入力します。
For Each〜Nextステートメントで、対象範囲内のセルに対してLoopしながら、内容の確認と体裁設定をします。

内容の確認は、Select Caseステートメントを使って、条件に合っているか判断しています。書式の設定は、別の内容で2度行っています。この他にも、フォント名を設定するなど、マクロの記録機能やヘルプで、確認してみてください。

<マクロの記録機能> 
[ツール]メニュー − [マクロ] − [新しいマクロの記録]を選択し、マクロに名前を付けてください。
ステータスバーに「マクロの記録中」と表示され、記録終了ツールバーが表示されますので、作業が終わったら記録終了ボタンを押してください。

●サンプル● 
Sub Sample() 
    Dim myRange As Range

    '<データを入力する列を追加します。>
    Columns("A:A").Insert Shift:=xlToRight 

    '<データを入力します。>
    Range("A1") = "かえる" 
    Range("A2") = "さる" 
    Range("A3") = "ひと" 
    Range("A4") = "ひよこ" 

    '<入力内容を確認しながら、体裁を指定します。>
    For Each myRange In Worksheets(1).Range("A1:A4") '←(1) 
            Select Case myRange '←(2) 
              Case Is = "ひと" 
                '<文字色をRGB値で設定します。(オレンジ)>
                myRange.Font.Color = RGB(255, 127, 0) '←(3) 
              Case Is = "ひよこ" 
                '<セルの塗りつぶしをRGB値で設定します。(黄)>
                myRange.Interior.Color = RGB(255, 255, 0) 
              Case Is = "かえる" 
                '<パターンを設定します。(縦縞)>
                myRange.Interior.Pattern = xlPatternLightVertical '←(4)
            End Select
    Next myRange
    MsgBox "確認1"

    '<入力内容を確認しながら、体裁を指定します。>
    For Each myRange In Worksheets(1).Range("A1:A4")
            Select Case myRange 
              Case Is = "ひと" 
                '<フォントサイズを設定します。>
                myRange.Font.Size = 20 
              Case Is = "ひよこ" 
                '<装飾設定をします。装飾をするしないは、する(True)/しない(False) によって設定します。>

                With myRange.Font 
                  '<太字>
                  .Bold = True 
                  '<斜体(イタリック)>
                  .Italic = True 
                   '<下線>
                  .Strikethrough = True 
                   '<取り消し線>
                   .Underline = True 
                 End With 
              Case Is = "かえる" 
                 '<上付きにします。>
                 myRange.Font.Superscript = True '←(5) 
              Case Else 
                 myRange = myRange & "(設定なし)"
            End Select 
    Next myRange 
    '<A列の内容に合わせて列幅を調節します。>
    Columns("A:A").EntireColumn.AutoFit
    MsgBox "確認2"
End Sub 

●補足説明● 
(1) For Each〜Nextステートメントは、オブジェクトコレクション(A列のセル範囲)
   の各オブジェクト(A列の各セル)に対して繰り返して処理を行います。
    <構文> 
     For Each element In group 
      (処理) 
     Next element 

    element:コレクションの各要素を繰り返す変数を指定します。
    group:オブジェクトコレクションを指定します。

   繰り返し処理が開始されると、引数groupの最初のオブジェクトに対して処理が実行されます。
   引数groupの中にオブジェクトがある限り処理は続けられます。
   処理から抜け出すには、「Exit For」を使います。

(2)Select Caseステートメントは、複数の条件を繰り返し判断する場合に、Ifステートメント
   よりもシンプルに条件分岐ができます。
    <構文> 
     Select Case testexpression
      [Case expressionlist-n [statements-n]]... 
      [Case Else [elsestatements]]
     End Select 

   testexpression:条件比較する数式または文字列式。
   expressionlist-n:比較される値。 
   statements-n:testexpressionがexpressionlist-nのいずれかと一致するとき、実行するステートメント。
   elsestatements:testexpressionがCase節のいずれとも一致しないとき、実行するステートメント。

(3)RGB(赤・緑・青)の明るさを表す数値(0〜255)で色を指定します。
(4)パターンの定数は以下のとおりです。
    xlPatternAutomatic,xlPatternChecker,xlPatternCrissCross,
    xlPatternDown,xlPatternGray16,xlPatternGray25,xlPatternGray50
    xlPatternGray75,xlPatternGray8,xlPatternGrid,xlPatternHorizontal
    xlPatternLightDown,xlPatternLightHorizontal,xlPatternLightUp
    xlPatternLightVertical,xlPatternNone,xlPatternSemiGray75
    xlPatternSolid,xlPatternUp,xlPatternVertical