Excelマクロ・VBA 最初のプログラム

2020年5月27日

こちらの記事に引き続いて最初のVBAプログラムを作ります。

作成手順

色々、説明するよりも作って動かすことが習得の近道です。

手順に従ってプログラムを作りましょう。

「開発」メニューを追加

メニューに「開発」がない場合は追加しておきましょう。

「開発」メニュー

メニューのないもない場所を右クリックし、「リボンのユーザー設定」を選択します。

メニューのないもない場所を右クリックし、「リボンのユーザー設定」を選択

「開発」にチェックを入れます。すると「開発」がメニューに表示されます。

「開発」にチェック

VBE(プログラム作成ツール)を開く

マクロの作成はVBE(Visual Basic Editer)上で行います。

まず[Alt]+[F11]のショートカットキーで開きます。

または「開発」より「Visual Basic」を選びます。

「開発」より「Visual Basic」を選ぶ

開いているブックと起動しているアドオンがプロジェクトに表示されます。

変数の宣言を強制する

ここでは詳細な説明は避けますが、「変数の宣言を強制する」設定は常に行いましょう。

開発の手間は増えるのですが、結果として効率的かつ安全になります。

「ツール」より「オプション」を選択

「変数の宣言の強制する」にチェックを入れます。

「変数の宣言の強制する」にチェックを入れる

標準モジュールを追加

マクロを追加するブックのVBAProjectを右クリックしてメニューを表示し「標準モジュール」を挿入します。

マクロを追加するブックのVBAProjectを右クリックして「標準モジュール」を挿入

「標準モジュール」と「Module1」が追加され右側に内容が表示されます。(初期は空白)

ここにプログラムを記述していきます。

「標準モジュール」と「Module1」が追加

プログラムを記述

先ほど追加したModule1に下記のプログラムを記述しましょう。

'特定セルの値をダイアログに表示するVBA
Sub Button_Click()
    '変数(データの入れ物)を宣言
    Dim sheetName, cellAddress, cellValue

    'ダイアログに表示するセルのシート名とセル番地を設定
    sheetName = "Sheet1"
    cellAddress = "B2"

    'セルから値を抽出する(入力) 
    cellValue = Worksheets(sheetName).Range(cellAddress).Value
    
    '表示するために加工する(演算・加工) 
    cellValue = sheetName & "シートの" & cellAddress & "セルの値は「" & cellValue & "」です。" 

    'ダイアログに抽出したセルの値を表示(出力) 
    MsgBox cellValue
 End Sub

コメント

'で始まる緑色の部分はコメント(メモ書き)でプログラムの動作には影響ありません。

インデント

インデントは半角スペースですが、TABキーで入れると効率的です。

変数

変数と言うと中学数学のxとyなどが想像されますが

プログラムの世界では名前の付いたデータの入れ物と認識しましょう。

Excelの世界ではセルに名前つけて値を入力するのと実用上は変わりません。

(VBAの動作的には変数にするべきですが)

先ほどのプログラムでは「sheetName」と「cellAddress」と

「cellValue」が変数にあたります。

変数に値を入れるときは下記のように記述します。

変数 = 入れる値

変数の名前は任意です。入れる値を表す物を命名しましょう。

シートにボタンを追加

「開発」より「ボタン」を選択し、任意の位置に設置します。

但しB2セルの上には置かないようにしましょう。

「開発」より「ボタン」を選択
ボタンが追加された状態

ボタンを追加すると「マクロの登録」が表示されるため

「Button_Click」を選択し「OK」ボタンを押下します。

マクロの登録

ここの名前はプログラムの2行目に書いたSubの箇所の名前です。

Sub Button_Click()

ここはプログラムの動きを表したり起動する場所を示す名前を付けます。

プログラムを実行

ボタンを押下するとプログラムが実行されダイアログが表示されます。

プログラム実行によるダイアログ表示1

B2セルの中身を変更するとダイアログの表示も変わります。

プログラム実行によるダイアログ表示2

ブックを保存

ブックを保存する場合は「Excel マクロ有効ブック(*.xlsm)」を選択します。

普通のブックではマクロが保存されません。

「Excel マクロ有効ブック(*.xlsm)」を選択

プログラムの改造

作成したサンプルプログラムを改造すると理解が深まります。

下記の改造を施してみましょう。

ダイアログに表示する値の場所を変更

赤字部分のシート名とセル番地を変更してみましょう。

'ダイアログに表示するセルのシート名とセル番地を設定

sheetName = "Sheet1"
cellAddress = "B2"

ダイアログの文言を変更

赤字分の文言を変更してみましょう。

'表示するために加工する(演算・加工) 
    cellValue = sheetName & "シートの" & cellAddress & "セルの値は「" & cellValue & "」です。" 

動かなくなる(エラー)時の対処

構文エラー時、プログラムコードに黄色のマーキングが入り

起動しても動かなくなる時があります。

構文エラーでプログラムコードに黄色のマーキングが入る例

その際にファイル名の部分に[中断]の文字が入ります。

プログラムがが中断状態という意味です。

[中断]状態を示す例

この状態ではプログラムを修正しても動かすことが不可能です。

これにはリセットボタンを押して解除する必要があります。

これにより再度、プログラムを動かす頃が可能になります。

リセットボタンで中断が解除されてプログラムが再度、動かすことが可能

プログラムの共通要素

プログラムやコンピュータは入力・演算・出力の3要素が存在し

何を出力し、そのために何を入力し、

どのような演算をするかを考えることが

プログラムを作る上で重要なことです。

入力を材料、演算を加工、出力を完成品と考えれば

物理的な作品・製品を作ることと何ら変わりがありません。

サンプルプログラムにあてはめるとこうなります。

・セルから値(材料)を取り出す(入力)

・表示する文言を作る部分が演算(加工)

・画面にダイアログとして表示(出力)

サンプルプログラム中の入力・演算・出力

入力や出力にはファイルなど他の場所もあります。

マクロ付きブック(xlsm)を開く時にセキュリティ警告が出る場合

初期状態ではマクロは動作せず、下記のような警告が表示されます。

マクロのセキュリティ警告

「コンテンツの有効化」を選択してください。

バージョンによって操作は異なりますが許可や有効化を行う流れは同じです。

注意点

なぜセキュリティの警告が出るかというと

マクロにはウイルスが仕込まれている危険性があるためです。

作成者が信頼できる場合にのみ有効化するようにしましょう。

次の記事

ここの内容を作成したら、次にこちらを作成してみましょう。

練習に最適な課題1 じゃんけんゲーム

マクロ・VBAの学習・活用方法の記事一覧