マクロプログラムの実行
マクロの入門書などでは、先ほどタブに追加した「開発」→「マクロ」の一覧表から実行したいマクロを選択して実行させたりしますが、実作業には向
いていないのでここでは、エクセルシート上に先ほどのフォームコントロールの「ボタン」を配置して実行させるようにします。
まず演習のためのファイルを新規作成しましょう。
1.エクセルを新規作成で開き、
ファイル名を「演習1.xlsm」とします。
ファイルの種類を「Excelマクロ有効ブック.xlsm」で保存下さい。
2.エクセルシート上に今から作成されるプログラムを実行させるためのボタンを配置します。
①タブの「開発」をクリックする。
②メニューの「挿入」をクリックする。
③表示されたフォームコントロールの「ボタン(フォームコントロール)」をクリックし
ます。
④カーソルをエクセルシート上に移動させると形状が「✛」に変わる。
⑤ボタンを貼り付けたい箇所にカーソルを移動させ、その場でドラッグして適当な大きさに
する。
⑥ドラッグを解除するとマクロの登録画面が表示されます。
⑦マクロ登録画面の「新規作成」ボタンをクリックする。
コードウィンドウが表示されます。
「Sub ボタン1_Click()」と「End Sub」の行間にボタン1をクリックした際に実行させたいプログラムを書込みます。
これを「プロシージャ」といいます。このプロシージャが収納された場所が上部に
表示さている「Module1」です。
「プロジェクト」の「標準モジュール」フォルダー内の「Module1」を表しています。
プロシージャは、プログラムの最小単位であり、前述のユーザーフォーム上に配置された各コントロールにも作成することができます。
これらのプロシージャを集大成することにより一つのシステムを動かすことになります。
⑧「ボタン」が貼り付けられていることの確認:
コードウィンドウ上部の最小化ボタン(-)をクリックして最小化しましょう。
エクセルシート上にボタンの外周に□、○が表示された状態で貼り付けられているのが確認されます(このような状態を「選
択状
態」と言います。)、
この状態で□○部をドラッグして大きさの調整、及びボタンの配置を変えることができます。
(エクセルで貼りつけた図形の調整とほぼ同じ操作ですので省略します。)
今後、プログラムの説明の途中でプログラムの実行状況を確認するため、コードウィンドウの表示とエクセルシートの表示を繰り返し行うこととなりますので
コードウィンドウは、最小化ボタンで最小化しておきます。
「ボタン1」で右クリックしますとメニューが表示されますので、「テキストの編集」をクリックします。
「ボタン1」の文字の左端にカーソルが点滅していますので、
「Delete」キーで文
字を消し、「起動ボタン」と書きます。
この表示の書換えはプログラムの実行上、何も意味はありません。何のためのボタンか分かるように書いているためだけで
す。
再度ボタン1を右クリックしてメニューの「マク
ロの登録」をクリックします。
再度「マクロ登録」画面が表示されますので、右側の「編集」ボタンをクリックするとコードウィンドウ画面が表示されます。
(一度コードウィンドウを開くと「マクロの登録」画面の「新規作成」の表示が次回から「編集」の表示に変わります。)
3.ボタン1のプロシージャに実際にプログラムを書いてみましょう。
1)エクセルシートの桝目のマクロ内での表記:
エクセルシートの升目をプログラムではセル(Cells)で表します。
エクセルの升目の表記は、横列のアルファベットと縦列の数値で表
されます(例
えば、「B3」)が、マクロでは、Cells(行番号、列番号)で表します。
いろいろな教本では、マクロに馴染むために最初「B3」のようにエクセルの表記をそのまま使用したりしていますが、この表記ではプログラム内で使用する場
合の自由度が低いのでCells(行番号、列番号)の表記で進めて行きます。
シートの縦列の数値の列を「行(row)」、横列のアルファベットの列を「列(Column)」といいます。
例えば「B3」の升目は、「Cells(3, 2)」と書きます。
行番号と列番号の区切りは「,
(カンマ)」で
区切ります。
2)プログラムの作成:
起動ボタンをクリックした場合、「名前」と言う言葉を桝目「B3」に書きなさいとプログラムしてみましょう。
「Cells(3, 2)の値に「名前」を代入しなさい」と指示します。
Cells(3, 2).Value=
"名前
"
となります。
ここでCells(3,2)は、器であってその中身がValueと考えれば良いかと思います。
参考までに「Value」の前の「. (ドット)」
を「の」と 訳すとプログラムが 読みやすくなります。
ここで使用している『=』は左辺と右辺が等
しいではなく、「左辺」に「右辺」を代入すると言う意味です。
但し
後述します「条件分岐文」の条件式で使用される場合には、通常の等号式「=」として使用されます。
起動ボタンのプロシージャにこのプログラムを書いてみましょう。
エクセルに戻り「起動ボタン」をクリックして見て下さい。「B3」に名前が表示されたのが確認されましたでしょうか。
Cells、Valueの最初の文字を大文字で表記していますが、マクロに登録されている用語は自動的に大文字に変換されますので、小文字で書き進めてい
ただいて構いません。
またセルの指定の行番号の後のピリオドの後の半角のスペースも自動で挿入されます。
逆に大文字に自動変換されない場合は、綴りなどが間違えていると言うことです。
間違えた場合の処置について記述致します。
【マクロの添削機能】
例えば「Cells」
を「Colls」
と書いてみましょう。
起動ボタンをクリックすると下図のように「デバッグ」(プログラムの異常)が表示されます。
「OK」ボタンをクリックします。
修正が必要な箇所を修正します。ここでは「Colls」を「Cells」と修正します。
このようにデバッグが発生した場合はプログラムが「中断」の状態なので、このままで
はプログラムを 再度実行する出来ませんので「リセット」ボ
タンをクリックし、「中断」を解除する必要があります。
以上デバッグが発生時の処置となります。
マクロの組み始めにはこのようなデバッグを頻繁に発生させるかもしれませんが、プログラムの間違い箇所を教えてくれるのでプログラムを書くことを恐れず書
き進めるのが早く上達する道かと思います。
【参考】
エクセルシートでは列方向はアルファベットで表示されているため、列番号数に換算しなければならず、面倒だと思われる方は次のようにしておくと便利かと思
います。
事前に通し番号を振っておく。
では次に条件分岐文の説明を行ないます。