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

2019年8月7日

こちらの記事に引き続いて

最初の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)を開く時にセキュリティ警告が出る場合

初期状態ではマクロは動作せず、

下記のような警告が表示されます。

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

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

バージョンによって操作は異なりますが

許可や有効化を行う流れは同じです。

注意点

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

マクロにはウイルスが仕込まれている

危険性があるためです。

作成者が信頼できる場合にのみ

有効化するようにしましょう。