ゼロからはじめるVBA - VBA事始め編 (2) 実際に簡単なプログラムをつくってみよう

ニュース
トップ

【ハウツー】

ゼロからはじめるVBA - VBA事始め編

2 実際に簡単なプログラムをつくってみよう

横塚利津子  [2009/05/05]

2/3

マクロの基本的な構造

前回のマクロの記録で作成されたマクロは「Sub マクロ名()...End Sub」で囲まれていました。マクロは必ず「Sub マクロ名()...End Sub」で囲んで、その中にVBAでプログラムを書きます。

[リスト1] マクロの基本

Sub マクロ名()
  ' ここにプログラムを書く
End Sub

実際に作ってみる

プログラムにいろいろな動きをさせるために、数値や文字をちょっと覚えておきたいことがよくあります。ちょっと置いておきたい箱のことを変数と言います。箱には名前を付けます。これを変数名と言い、半角英数文字を使って自分で好きなように名前を付けることができます。頭1文字目には数値は使えません。またExcelの場合、変数名に漢字を使っても実行させることができます(ただし、あまりお勧めはしません)。

[リスト2] 変数への代入

i = 50   '(1)
j = i + 20 '(2)
s = "こんにちは" '(3)

(1)は変数名iの箱に50という数値を入れたところです。
(2)は変数名iの箱の内容と20を足して変数名jの箱にいれました。70が入ります。
(3)は「こんにちは」と言う文字をsという変数名の箱に入れました。「=」は代入演算子と呼ばれるもので、右の式の結果を左の変数に設定(代入)することを意味します。

プログラミング言語によっては、変数を使うにあたって最初に変数を宣言するという行為が必要なものもありますが、VBAでは使いやすくするために、こうした宣言をしなくても良いことになっています。変数に値を代入するだけで、必要な変数を用意してくれるのです。

VBAの書き方

マクロを作成してみましょう。ここで、もうひとつ「MsgBox」という標準コマンドの説明をします(「01.xlsm」)。

[リスト3] MSGマクロ(01.xlsm)

Sub MSG()
  s = "山田花子"
  MsgBox (s & "さん、こんにちは!")
End Sub

変数名sの箱に「山田花子」という文字列が入っています。文字の場合「"」で囲みます。MsgBoxコマンドで小さなダイアログを表示させ、「s & "さん、こんにちは!"」つまり「山田花子さん、こんにちは!」と表示させます。

[構文]MsgBox

MsgBox(prompt[,buttons][,title][,helpfile,context])

MsgBox関数の引数

引数概要
prompt必ず書きます。メッセージの内容です。
buttons省略可能です。表示するボタンの種類や個数などを指定します。
title省略可能です。ダイアログのタイトルバーに表示する文字を書きます。
helpfile省略可能です。説明文がある時指定します。ここを指定した時はcontextも指定します。
context省略可能です。helpテキストに指定したコンテキスト番号を指定します。

ダイアログは[OK]ボタンをクリックすることで、閉じることができます。「&」は文字列と文字列をつなぐ役目をします。

図3 メッセージボックス(MsgBox)表示

実際に[リスト3]を作ってみましょう。新しいワークブックを作成してください。図2のようにVBE画面を表示させプログラムを書いていきます。Sub MSGと書いてEnterキーを押すと自動的にカッコを補い、かつ、下の行にEnd Subと追加してくれます。中の2行を書き込みましょう。MSGマクロができました。基本編で書いた3種の実行方法、どれでも良いので実行させてみて下さい。図3のような結果が表示されたでしょうか?

図4 プログラムを書き込んだ画面

2/3

インデックス

目次
(1) VBAでプログラミングをはじめよう
(2) 実際に簡単なプログラムをつくってみよう
(3) セルのデータを取り込んでみよう
関連したタグ

新着記事

特別企画

一覧

    人気記事

    一覧

    新着記事

    Twitter、ツイートを分析できるダッシュボードを一般ユーザーにも公開
    [12:01 8/28] エンタープライズ
    キリンビール、新商品を通じて新手法のマーケティングを実施
    [11:59 8/28] エンタープライズ
    プルデンシャル生命、公的な障害年金制度と連動の「就労不能障害保険」発売
    [11:53 8/28] マネー
    旅行予約サービス、スマホからの利用者が増加 - ニールセン
    [11:52 8/28] エンタープライズ
    2013年の個人EC市場規模は11.2兆で前年比17.4%の増加 - 経産省調査
    [11:52 8/28] エンタープライズ

    特別企画

    一覧