VBAを始めるときに覚えておくべき考え方・構文を知りたいな・・・
できれば、他言語経験がある人向けにVBAのクセが知りたい・・・
プログラミング経験がある人にとって、超入門からもう一度学習するのは無駄ですよね。使ったことがある言語との差分や、VBA独自の考え方・書き方だけ覚えたい人が多いのではないでしょうか。
こんにちは!フリーランスエンジニア兼テックライターの脇坂です。
この記事では、プログラミング言語経験のある人向けに、VBAの肝となる考え方・構文について解説します!
この記事はこんな人のために書きました。
- VBA以外のプログラミング言語経験がある人
- これからVBAを使えるようになりたいと思っている人
VBAの肝となる考え方「オブジェクト階層構造」とは?
まず、VBAの肝となる「オブジェクト階層構造」について解説します。
VBAは、次のようなオブジェクト階層構造になっています。
アプリケーションはExcelのことで、ワークブックはBook1、Book2などのブック全体のことを意味します。ブックの中には複数のシートがあり、シートには複数のセルがありますよね。
このように、Application、Workbook、Worksheet、Range(Cells)の流れでオブジェクト階層構造が成り立っています。VBAで処理を書くときの基礎なので、覚えておきましょう。
具体的なVBAを書くときのイメージは、以降で詳しく解説します。
VBAで1文を書くときの考え方
次に、VBAで1文書くときの考え方について解説します。
ドット・半角スペースで書く
VBAでは、基本的にドットまたは半角スペースを使って処理を書いていきます。
わかりづらいので、簡単な例をご紹介しますね。
サンプルコード:
Sub Test() Workbooks("Book1.xlsm").Worksheets("データ一覧").Range("A1").Value = "データ入力" End Sub
実行結果:
ブック名「Book1.xlsm」の「データ一覧」シートの「A1」セルに、「データ入力」の文字を入力するサンプルです。ワークブック.シート.セルのようにドットでつないで処理を作っていくのです。
改行したいときはアンダーバー(_)を使う
また、VBAでは1文を改行して書くこともできます。長くなってしまった場合は、アンダーバー(_)を使って改行しましょう。
改行例:
Sub Test2() Workbooks("Book1.xlsm").Worksheets("データ一覧").Range("B1").Value _ = Workbooks("Book1.xlsm").Worksheets("データ一覧").Range("A1").Value End Sub
文字列を結合はアンド(&)を使う
文字列を結合する場合は、アンド(&)を使います。
文字列結合する例:
Sub Test3() MsgBox "文字列" & "を結合する場合は、" & "アンド(&)" & "を使います。" End Sub
VBAのメソッド・プロパティの使い方
次に、VBAのメソッド・プロパティの使い方について解説します。
メソッドは、オブジェクトを操作するための処理です。たとえば、次のようなメソッドがあります。
■メソッド例
- コピー:Copy
- 挿入:Insert
- 削除:Delete
- 保存:Save
プロパティは、オブジェクトの値を変更するための設定値です。たとえば、次のようなプロパティがあります。
■プロパティ例
- 値:Value
- 背景色:BackColor
- 太字:Bold
- 罫線:LineStyle
「オブジェクト.メソッド」「オブジェクト.プロパティ」のように、どちらもオブジェクトを指定してから次のように使います。
サンプルコード:
Sub Test4() 'メソッド例 A1セルの値をB2セルにコピー Workbooks("Book1.xlsm").Worksheets("データ一覧").Range("A1").Copy _ Workbooks("Book1.xlsm").Worksheets("データ一覧").Range("B1") 'プロパティ例 A1セルに「データ入力」をセット Workbooks("Book1.xlsm").Worksheets("データ一覧").Range("A1").Value = "データ入力" End Sub
VBAの変数の書き方
次に、変数の書き方について解説します。
VBAでは、次のように書くことで変数宣言することができます。
変数宣言方法:
Dim 変数名 as 型名
数値を格納する変数:
データ型 | 名称 | 消費メモリ | 説明 |
---|---|---|---|
Byte | バイト型 | 1バイト | 0~255 |
Integer | 整数型 | 2バイト | -32768~32767 |
Long | 長整数型 | 4バイト | -2147483648~2147483647 |
Single | 単精度浮動小数点数型 | 4バイト | 1.401298E-45 ~ 3.402823E38(絶対値) |
Double | 倍精度浮動小数点数型 | 8バイト | 4.94065645841247E-324 ~ 1.79769313486232E308 (絶対値) |
Currency | 通貨型 | 8バイト | -922337203685477.5808 ~ 922337203685477.5807 |
そのほかの値を格納する変数:
データ型 | 名称 | 消費メモリ | 説明 |
---|---|---|---|
String | 文字列型 | 2バイト | 最大約20億文字まで |
Date | 日付型 | 8バイト | 西暦100 年1月1日~西暦9999年12月31日までの日付と時刻 |
Boolean | ブール型 | 2バイト | 真 (True) または偽 (False) |
Objec | オブジェクト型 | 4バイト | オブジェクトを参照するデータ型 |
Variant | バリアント型 | 16バイト | すべてのデータ型 |
他の言語と使い方はほとんど変わりませんが、詳しく使い方を知りたい方は以下を見てみてくださいね!
VBAの関数とは?
次に、VBAの関数について解説します。VBAでは、大きく分けて以下3つの種類があります。
■関数の種類
- VBA関数:VBAで最初から使える関数
- ワークシート関数:Excelのセルで使える関数
- ユーザー定義関数:自作した関数
Excelで普段から使っている関数も、ワークシート関数として呼び出せるのが最大のポイントですね。それぞれの違いについては、以下で詳しく解説しています。
VBAで使える演算子とは?
if文などの条件式や、for文などのループ処理でよく使うのが演算子ですよね。
VBAでは、大きく分けて以下5つの演算子を使えます。
- 算術演算子
- 文字列演算子
- 代入演算子
- 比較演算子
- 論理演算子
使い方を以下に詳しくまとめているので、さらっと見ておくのがおすすめです!
VBAのコメントの書き方とは?
最後に、コメントの書き方について解説します。
VBAでは、シングルクォーテーション(‘)を先頭につけることで、コメント化できます。
コメント例:
Sub Test5() 'コメント1 'コメント2 'コメント3 'コメント4 End Sub
他の言語にあるような、複数行を一括でコメントアウトする書き方はありません。ただ、一括で複数行をコメントするための裏技があります。VBAを書くエディタVBEにコメントを一括で書くための設定を追加する方法です。
以下で詳しく解説しているので、ぜひ見てみてくださいね!
まとめ
今回は、VBAの肝となる考え方・構文について解説しました。
最初は違和感を感じるかもしれませんが、オブジェクト階層構造、基礎的なコードの書き方がわかれば、あとは使っていくのみです。
ぜひ、VBAを使ってみてくださいね!