この記事ではプログラミング初心者向けに、VBAの基本を分かりやすく解説しています。
内容はデータの入出力、データ型についての解説です。
※当サイトではVBAの基本を解説しています。
もし、VBAの基本が分からなければ、下記リンクより基礎を学習できます。
③VBAのデータ入力方法を解説(本記事)
⑦Excelでバックテストする方法。【VBAによるツール開発】
プログラミング知識ゼロからシステムトレードを自作できるようになった経験を活かし、この記事を書いてます。
プロシージャの処理の順番
プログラムの処理の流れは、特別な処理を除き、基本的に上から下の行へと順番に処理していきます。
以下のコードであれば、処理1、処理2、処理3の順に命令が実行されプログラムが終了します。
処理1
処理2
処理3
End sub
データの出力
セルにデータを出力する方法を解説します。
以下のコードは、セルA1に「Hello world」と出力されるプロシージャになります。
まずは、モジュールにこのプロシージャを作ってみましょう。
Range(“A1”) = “Hello world”
’シングルクォーテーションを最初につけるとその行は無視される
End sub
コードの書き方の注意点
・先頭のSubと最後のEndの右横の空白は必須です。
・「’」シングルクォーテーションを文頭につけるとその行は無視され処理されません。
メモ代わりに使いましょう。(これをコメントアウトと言います。)
・Range(“A1”) = “Hello world” ‘ ここからコメント
上記のようにコードの最後にメモ書きもできます。
また、VBEにてコメントアウトした部分は緑色になります。
※こんな感じ
「=」の両脇にも空白がありますが、これは記載しなくても1行入力しおえたタイミングでVBEの入力アシストで自動入力されます。
また、コード内で「” ”」(ダブルクォーテーション)で囲まれてるものは「文字列型」というデータ形式で扱われます。(データ型については後述)
※上記のコードではA1とHello worldが文字列型です。
もし、この「” ”」(ダブルクォーテーション)を書かないとエラーになりますのでご注意下さい。
コードの実行方法
コードを実行するためには、ツールバー→「実行」→「Sub/ユーザ-フォームの実行」の順でクリックします。
または、F5キーを押すことで実行できます。
※モジュール内に複数プロシージャがある場合、対象のプロシージャがアクティブになった状態で実行しましょう。
アクティブにするためには、対象のプロシージャ内で1回クリックすればOKです。
実行すると、A1セルにHello worldと表示されます。
エラーがでる場合はコードの記述に間違いがあるため見直しましょう。
コードの解説
Range(“A1”) = “Hello world”
このコードはセルA1にHello worldと出力するプログラムです。
Rangeとはオブジェクトと呼ばれるもので、このRangeオブジェトはExcelのセルのことです。
Rangeオブジェクトの()内に、パラメータであるセルの座標をセットすることで、任意のセルにデータを出力できます。
Rangeオブジェクトはセルを表しますが、ブックであれば「Workbooks」オブジェクト、シートであれば「Worksheets」オブジェクトなど様々なものがあります。
また、今回書いたコードですが、正式には「Range(“A1”).Value = ”Hello world”」となります。
「.Value」の部分は「プロパティ」と呼ばれるオブジェクトに付属するパラメータです。
Rangeオブジェクトの場合、色、罫線など様々なプロパティがあります。
「.Value」とは「値」を表すプロパティであり、省略することもできます。
つまり、「Range(“A1”).Value = ”Hello world”」とは
セルA1【Range(“A1”)】の値【.Value】に「Hello world」と代入しています。
データの入力
今度はセルからプログラム上にデータを入力(取得)してみましょう。
その入力された情報をさらシートに出力してみましょう。
コードは以下のようになります。
Range(“B1”) = Range(“A1”)
End sub
実行結果は、セルA1に入力されたデータがそのままセルB1に出力されます。
先ほどのプログラムではコード内に自身で”Hello world”というデータを書きましたが、今回はセルA1のデータをプログラムにいったん入力(取得)し、それをセルB1に出力しています。
このようにセル上のデータを取得できれば、そのデータを元になんらかの計算をし、その結果を出力することもできます。
データの型
データの「型」について解説します。
ExcelとVBAで扱うデータには「データ型」が存在します。
以下の表をご覧下さい。
型名 | データ型 | 値の範囲 |
String | 文字列型 | 文字列 |
Boolean | ブール型 | True または False |
Byte | バイト型 | 0 ~ 255 の整数 |
Integer | 整数型 | -32,768 ~ 32,767 の整数 |
Long | 長整数型 | -2,147,483,648 ~ 2,147,483,647 の整数 |
Single | 単精度浮動小数点型 | 負:-3.402823E38 ~ -1.401298E-45 正:1.401298E-45 ~ 3.402823E38 |
Double | 倍精度浮動小数点型 | 負:-1.79769313486231E308 ~ -4.94065645841247E-324 正:4.94065645841247E-324 ~ 1.79769313486232E308 |
Date | 日付型 | 西暦100年1月1日 ~ 西暦9999年12月31日 の日付と時刻 |
Object | オブジェクト型 | セルやブック、ワークシートなどのオブジェクト全般 |
Variant | バリアント型 | どんなデータでもOK |
プロパティの設定変更、データの入出力などにおいて上記の「データ型」が重要になってきます。
たとえば、セルA1に文字や数字などのデータは入力できますが、セルA1にシートそのものやブックそのものは入力できません。
これは対象のプロパティが求めるデータ型に対して、設定しようとするデータ型が間違っているためプログラミングのルールとして、できないようになっています。
もし、データ型を間違えて入力すると、その時点でエラーがでます。
プログラムを作る際、データ型にはよく注意しましょう。
ただし、整数、実数に関しては間違ったデータ型を使うと計算精度が狂うこともあるので注意しましょう。