VBAを覚えるための構文の書き方について徹底解説!


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を使ってみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次