VBAのデータ入力方法を解説

システムトレード

この記事ではプログラミング初心者向けに、VBAの基本を分かりやすく解説しています。

内容はデータの入出力データ型についての解説です。  

 

※当サイトではVBAの基本を解説しています。

もし、VBAの基本が分からなければ、下記リンクより基礎を学習できます。

VBAの開発環境の構築方法を解説

VBAのモジュールを作成する方法を解説

③VBAのデータ入力方法を解説(本記事)

VBAの変数について解説

VBAの繰り返し処理について解説

VBAの条件分岐処理について解説

Excelでバックテストする方法。【VBAによるツール開発】

 
 
マンモス
マンモス
はじめまして、マンモスです。
プログラミング知識ゼロからシステムトレードを自作できるようになった経験を活かし、この記事を書いてます。
 

 

 

プロシージャの処理の順番

プログラムの処理の流れは、特別な処理を除き、基本的に上から下の行へと順番に処理していきます。

以下のコードであれば、処理1、処理2、処理3の順に命令が実行されプログラムが終了します。  

Sub test()
  処理1
  処理2
  処理3
End sub

 

データの出力

セルにデータを出力する方法を解説します。

以下のコードは、セルA1に「Hello world」と出力されるプロシージャになります。

まずは、モジュールにこのプロシージャを作ってみましょう。

 

Sub データ出力()
  Range(“A1”) = “Hello world”  
  ’シングルクォーテーションを最初につけるとその行は無視される
End sub

 

コードの書き方の注意点

・1処理を1行にまとめて書きます。

・先頭の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」とは「値」を表すプロパティであり、省略することもできます。

 

全てのプロパティが省略可能なわけではなく、「.Value」のみ省略できます。

 

つまり、「Range(“A1”).Value  =  ”Hello world”」とは
セルA1【Range(“A1”)】の値【.Value】に「Hello world」と代入しています。

 

データの入力

今度はセルからプログラム上にデータを入力(取得)してみましょう。

その入力された情報をさらシートに出力してみましょう。

コードは以下のようになります。

 

Sub データ入力()
  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にシートそのものやブックそのものは入力できません。

これは対象のプロパティが求めるデータ型に対して、設定しようとするデータ型が間違っているためプログラミングのルールとして、できないようになっています。

 

もし、データ型を間違えて入力すると、その時点でエラーがでます。

プログラムを作る際、データ型にはよく注意しましょう。

 

くまさん
くまさん
全部覚えきれない・・・・
マンモス
マンモス
基本的に間違えたらエラーでるから漠然と覚えておけばOK!
ただし、整数、実数に関しては間違ったデータ型を使うと計算精度が狂うこともあるので注意しましょう。

 

計算精度が狂うとは?
実数値をInteger型、Long型などの整数型に入れようとすると、
小数点以下が四捨五入されます。
正確な計算が必要なときは要注意です。

タイトルとURLをコピーしました