Withステートメントを使いこなす

マクロ講座9回 
見ずらいコードもWithステートメントですっきり

Excel 2013 マクロ講座9回

Withステートメントをつかうと便利な事

前回のサンプルで、Withステートメントが出てきたので、ここで少し解説しておきましょう。
Withステートメントはひとつのオブジェクトを対象とした処理をまとめて記述できるステートメントです。
(サンプルファイルは、こちらから 2013マクロ講座9回サンプルデータ

Withステートメントを使わないと

オブジェクト1.プロパティ1
オブジェクト1.メソッド1
オブジェクト1.プロパティ2

というように、何度もオブジェクト1を書かなければいけません。
面倒ですし、とても見づらいです。

Withステートメントを使うと

Withステートメントを使った場合は、

With オブジェクト1
 .プロパティ1
 .メソッド1
 .プロパティ2
End With

というように、スッキリします。
このように、Withステートメントを使うと、「End With」を指定するまで、特定したオブジェクトを省略することができます。

サンプルによる実習

サンプルを開いて、マクロの記録をしていきましょう。
オレンジの枠部分のセル範囲を選択して、書式を設定します。
マクロの記録ダイアログボックスが表示されたら、記録するマクロに名前をつけます。ショートカットキーも設定した方が良いでしょう。

Rangeを選択して、フォントをAR P丸ゴシック体E に変更し、
サイズを12にして、背景色をオレンジに変えました。
フォントグループのコマンドで設定できる内容です。

記録終了ボタンをクリックして、終わりです。


では、コードを見てみましょう。
マクロの一覧ボタンをクリックして、編集をクリックします。

Withステートメントで、まとめられているのがわかります。グリーンの部分は、設定していませんが、自動記入で入力された部分です。
With Selection.Font は、Withステートメントのはじまりで、
選択されているオブジェクトのFontに対して、一括して操作を行います。

.Name = "MS Pゴシック"
フォントの名前(Name)を、「AR P丸ゴシック体E」にする。
.Size = 12
サイズを「12」にする。

ここからは、設定しないにもかかわらず、自動で記録されたコードです。
.Strikethrough = False
取り消し線(Strikethrough)です。表示しない。
True の場合、水平な取り消し線を付けます。
.Superscript = False
上付き文字(Superscript)の設定。上付きにしない。
True の場合、対象となるフォントが上付き文字になります。
.Subscript = False
下付き文字(Subscript)の設定。下付きにしない。
True の場合、対象となるフォントは下付き文字になります。
.OutlineFont = False
OutlineFont プロパティは Windows では無効です。
アウトラインフォントにしない。
.Shadow = False
影付きにしない。
.Underline = xlUnderlineStyleNone
フォントの下線(Underline)の種類をxlUnderlineStyleNoneに設定します。
.TintAndShade = 0
TintAndShadeは0にする。
.ThemeFont = xlThemeFontNone
テーマフォントなし。
End Withは、Withステートメントを終了する。

With Selection.Interior は、Withステートメントのはじまりで、
選択されているオブジェクトの、Interior(セルの内部)に対して、
一括して操作を行います。
.Pattern = xlSolid は、パターン(網かけ)をなしにする
.PatternColorIndex = xlAutomatic は、パターン色を自動にする
.Color = 49407 は、カラーを49407番にする
.TintAndShade = 0 は、色の明暗は、0(標準・デフォルト)
.PatternTintAndShade = 0 パターン(網かけ)の明暗は、0
End Withは、Withステートメントを終了する。
End Sub マクロの終了

余分なコードを消去すると、以下のようになります。



Sub 見積書デザイン()
    Range("A7:E7,C14:D16").Select
    With Selection.Font
        .Name = "AR P丸ゴシック体E"
        .Size = 12
    End With
    With Selection.Interior
        .Color = 49407
    End With
End Sub
    
フォントの種類やサイズなどの情報を管理しているオブジェクトはFontオブジェクトで、「Name」プロパティや「Size」プロパティで設定します。
セルの書式設定のフォントタブで設定するのが、これにあたります。


セルの背景色や網かけなどの情報を管理しているオブジェクトは、Interiorオブジェクトです。
セルの書式設定の塗りつぶしタブがこれにあたります。


今日の講義は以上です。お疲れ様でした。