ExcelTips(For Beginners)~VBAでのマクロ2

今回はコーディングについて。コードといのは正確にはソースコードというのですが,プログラミング言語の命令を表す文字のことです。その文字を書き連ねる行為をコーディングと呼んでます。いろいろと命令や文法を覚える必要はありますが,全てを覚える必要はありません。使うものから身につけていきましょう。

基本用語

VBAにはいくつかの用語があります。説明に必要なので最初に説明します。

オブジェクト,プロパティ,メソッド

VBAの仕様として,プログラミングをする対象(オブジェクト)があります。Excel上で目に見えるもの全てと言っていいと思います。シートやセル,ブックそのものもオブジェクトです。そしてそのオブジェクトの性質(プロパティ)や動作(メソッド)と言うのがあります。

また,オブジェクトの中にオブジェクトがあります。例えばブックの中にシートがあり,シートの上にセルがあると言う具合です。

ステートメント

プログラム全体を制御するための命令です。プログラムらしい部分でもあります。覚えるべきステートメントはさほど多くはありません。ほとんど決まり文句のようなものもあります。

変数

値(数値,文字列)を一時的に納める容器のようなものです。中学校の数学で関数の単元で変数を言うのをならったと思いますが,それと同じです。xだけでなくいろいろな文字が使えます。

実践

まずは記録したマクロを見てみましょう。

Sub Macro1()
'
' Macro1 Macro
'

'
   ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
       IgnorePrintAreas:=False
End Sub

大きなプログラムそのものはいくつかの塊からできています。その塊をプロシージャといいます。何種類かあるのですが説明はまたの機会に。
その塊ごとに動作を分割して組み合わせて一つのプロとグラムとします。上のコード中にある"Sub"というのがプロシージャの始まり。そして最後の"End Sub"というのがプロシージャの終わりです。この二つの文字列の間にはさまれた部分がプログラムの本体となります。

” ’ ”(アポストロフィ)が先頭についている行がありますが,これはコメント行といって,プログラムの実行には何ら影響を及ぼさないものです。主にプログラムの説明などを記述しておきます

さていよいよ本体についての説明です。

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
       IgnorePrintAreas:=False

ここで重要なのは

ActiveWindow.SelectedSheets.PrintOut 

の部分です。残りはオプションといってなくても動きます。
カンマで区切られていますが,これが先に説明した対象(オブジェクト)と動作(メソッド)を区別しています

ActiveWindow・・・実行中のウィンドウ(オブジェクト)
SelectedSheets・・・選択されたシート(オブジェクト)
PrintOut ・・・印刷する(メソッド)

日本語訳すると「今実行中のウィンドウ中にある,選択したシートを,印刷する」という意味なります。
対象となるものがどうするか,というのが記述の基本です。

(オブジェクト).(メソッド)

オブジェクトのプロパティ

オブジェクトについては名前を付けることができます。
VBE(VBAの編集ウィンドウ)の「表示」→「プロパティウインドウ」でプロパティウィンドウを表示させましょう。

そうするとしたの画像のような状態になります。

ExcelTips(マクロ・オブジェクト名)

ここで左上の窓(プロジェクトエクスプローラといいます)の中にあるSheet1をクリックして選択してみましょう。そうするとワークシートSheet1のプロパティ(性質)が下のプロパティウィンドウに表示されます。

ここでワークシートのタブを"帳票"と書き換えると,プロパティウィンドウでは Name が"帳票"に変わった事が確認できます。

話を元に戻します。プロパティウィンドウの一番上にある(オブジェクト名)やNameプロパティをつかって,さっきの印刷命令を記述してみます。

オブジェクト名を使った場合

Sheet1.PrintOut

Nameプロパティを使った場合

Sheets("帳票").PrintOut

グッとわかりやすくなったと思いませんか?

エクセル内のオブジェクトにはわかりやすい名前を付けてあげると,コーディングの見通しが良くなります。
以前説明した「名前の定義」ももちろん使えます。むしろどんどん使うべきでしょう

さて,記録したVBAによって記述されたマクロを整理してみましょう。

Sub Macro1()
    
    sheets("帳票").PrintOut

End Sub

と,たったこれだけで印刷が可能です。印刷のマクロを作りたいときは,これを標準モジュールにコピペして,一番上のSubのあとに書いてあるMacro1( ) 中のMacro1の部分を適当な名前に変えましょう。その時最後の( )は忘れないように付けてください。更にSheets("帳票")の"帳票"を印刷したいシート名に変えれば完成です。

注意として,印刷したい範囲は,「ページレイアウト」→「印刷範囲」であらかじめ設定しておいてください。VBA内で設定もできるのですが,いつも同じ印刷をするのであればこれでも十分だと思います。PrintOutメソッドのオプションについては,また機会があれば説明します。

次回は更に進んだ印刷についてです。

続く

この記事が気に入ったらサポートをしてみませんか?