記録のマクロで作ったマクロのコードを Visual Basic Editor でやっと見るところまで来ました。 セルの背景色を 塗るというだけのことなのに沢山のコードが 記述されていて びっくり してしまいます。それに何やら、With~End Withステートメントというものがあります。Withステートメントってどんな意味でしょうか?
日本一やさしいマクロ講座入門編 マクロ講座2回-2
マクロ講座2回は、マクロの中身を知るということで、「Visual Basic Editor(VBE)」を開いてコードを見ています。
セルの背景色を塗るというだけのことに、沢山のコードが 記述されていてびっくり してしまいますね。
でもそれは、 設定しないということをコード化したものです。
これはマクロをリメイクするときのヒントになります。
このページは、マクロ講座2回からの続きです。
(サンプルファイルは、こちらから 2回サンプルデータ)
(6)コードはこのように記録されていました。では、コードの意味です。
Sub Macro2()
' Macro1 の解説
'
With Selection.Interior 'Withステートメント
.Pattern = xlSolid '塗りつぶし(網かけ無し)
.PatternColorIndex = xlAutomatic 'パターン色をxlAutomatic にする
.ThemeColor = xlThemeColorAccent4
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0 'PatternTintAndShadeプロパティ
End With 'Withステートメントの終わり
End Sub
(7)プログラムの中に
With オブジェクト名
処理1
処理2
End With
というコードがありますが、これは、
With~End Withステートメントといいます。
同じオブジェクトに対して複数の処理を実行するときに使う方法です。
ここでは同じオブジェクトとして、 Selection.Interiorを指定しています。
「Selection.Interior」とは「選択対象の内部」という意味です。
背景の塗りつぶしには、色の他にパターンもあるので、自動的に、
セルの色だけを指定すると、網掛けなしという指定が入るのです。
おもしろいですね。
こちらが、不要な部分を削除したコードになります。
Sub Macro3()
With Selection.Interior '選択対象の内部について
.ThemeColor = xlThemeColorAccent4 'テーマカラーの設定
.TintAndShade = 0.799981688894314 '色の明暗の設定
End With
End Sub
ステートメントには広義のステートメントと狭義のステートメントがあります。
VBEの用語集にある広義のステートメントによると、
1 種類の処理、宣言、または定義を表す、構文的に完全な単位。
通常では 1 行に 1 ステートメントですが、コロン (:) を使用することで 1 行に複数のステートメントを記述できます。
また、行連結文字 (_) を使用することにより、論理的な 1 行を物理的な複数行に継続できます。
これはプログラムの構成単位です。
手続きや命令宣言などをステートメント、または「文」と言います。
一般にステートメントとは「命令文」のことです。
簡単なコードでしたが、具体的な設定をセルの書式設定ダイアログで確認しましょう。
セルの書式設定ダイアログの塗りつぶしタブをクリックすると以下のような画面になります。
ショートカットキーで、 Ctrl + 1 と入力すると、セルの書式設定ダイアログをすばやく表示できます。

マクロのコードでは、次の部分と対応します。

マクロ講座2回はこれで終了です。
お疲れ様でした。