前回の記事ではエクセルVBAを使ってHello Worldを記述しました。今回の記事ではもう少し実用的なオブジェクト(セルやシートなどの操作の対象)の操作について勉強します。
↓前回の記事
まずはVBAに必要な概念を理解する
オブジェクト
まず初めにVBAにはオブジェクトという概念があります。オブジェクトは一言でいうと操作したい対象のことです。
プロパティ
オブジェクト.プロパティ
例えばですが、車をVBAが持つオブジェクトだとすると、車体の色を知りたい場合は
車.色
という表記をします。もし、車の車体の色を赤色にしたい場合は
車.色 = "赤"
という記述をします。
実際にセルに値を入れてみる
ここまででVBAに必要な用語を勉強しました。ここからは実際にセルに値を入れてみたいと思います。前回も勉強しましたが、エクセルの場合はSubの後にプロージャー名を記述した後に処理内容を記述します。
例としてB2セルにHello Worldを入力するサンプルプログラムを作成します。
Sub HelloWorld()
Range("B2").Value = "Hello World!"
End Sub
ここでRangeが先ほど紹介したオブジェクトでB2セルという意味を持ちます。また.の次に記載されているValueはRangeオブジェクトが持つプロパティで値を意味します。
これを実行すると下記のようにB2セルにHello World!という文字が入ります。
繰り返し値を入れてみる
先ほどの例は1つのセルに値を入れるパターンでしたが、番号を振る場合など複数行に入力したい場合があると思います。ここではNo.1~No.10をB1セルからB10セルに入れてみます。
まずは変数の宣言
Dim 変数名 As データ型
DimはDimensionの略で、これから変数を宣言することを意味します。Dimの後に変数名を記載します。変数名はなんでもいいのですが、VBAではハンガリアン記法を推奨されているみたいです。一言でいうと型を名前の先頭につけて型を区別しやすくするための記法です。(システムハンガリアンというみたいですが)
詳細の説明はWikipediaを参照お願いします。
Asの次はデータ型を記載しますが、こちらの記載をしなくても問題ございません。型を記載しない場合はVariant型になり、代入された情報に応じて型が変更されるようになります。
最初のうちはValiant型でもいいと思いますが、大規模な開発とかになると不要に領域を確保してしまうため、メモリの消費が多くなってしまうなどのデメリットもあります。
型の一覧について整理したので、下記を参照お願いします。
データ型 | 格納できるデータ | メモリサイズ | 補足 |
---|---|---|---|
Boolean | 真偽値 (True または False ) |
2バイト | 条件式の結果などを格納します。 |
Byte | 0から255までの整数 | 1バイト | 非常に小さい整数を扱う際に使われます。 |
Integer | -32,768から32,767までの整数 | 2バイト | 比較的よく使われる整数型です。 |
Long | -2,147,483,648から2,147,483,647までの整数 | 4バイト | Integer より大きな整数を扱う際に使われます。 |
Single | 単精度浮動小数点数 | 4バイト | 小数点を含む数値で、7桁程度の精度です。 |
Double | 倍精度浮動小数点数 | 8バイト | 小数点を含む数値で、約15桁の精度を持ちます。通常、小数はこちらが推奨されます。 |
Currency | 固定小数点数 | 8バイト | 通貨計算に適しており、小数点以下4桁の精度を持ちます。 |
String | 文字列 | 1バイト/文字 | テキストデータを格納します。可変長と固定長があります。 |
Date | 日付と時刻 | 8バイト | 日付や時刻を格納します。 |
Object | オブジェクトへの参照 | 4バイト | Excelのワークシートやブックなど、特定のオブジェクトを指す際に使われます。 |
Variant | 任意のデータ型 | 16バイト以上 | すべての種類のデータを格納できますが、速度やメモリ効率の面で推奨されません。 |
前置きが大分長くなりましたが、今回は1~10までの番号を振っていくため、制御変数のiをint型で宣言します。(制御変数は特にハンガリアン記法はしない場合が多そうです)
Dim i As Integer
For文の記載
For 制御変数 = 開始値 To 終了値 [Step 増分]
' 実行したい処理
Next [制御変数]
※[]で記載したものは省略可能です。
Cells(行番号, 列番号)
今回はA1セルからA10セルにNo1からNo10を振りたいと思います。先ほどのFor文と組み合わせると下記のようになりますFor i = 1 To 10 Step 1 Cells(i, 10).Value = "No. " & i Next i
A1からA10にNo.1から10を記載する
ここまでで必要な要素を解説しました。ここでは実際にA1からA10セルに1から10のNoを振るコードを記載します。今回作成したコードは下記の通りです。Sub test() Dim i As Integer For i = 1 To 10 Step 1 Cells(i, 1).Value = "No. " & i Next i End Sub
これを実行すると下記のようにA1からA10列に番号が振ることができました。今回はVBAでオブジェクトの操作の勉強、変数の宣言とFor文の使い方を勉強しました。次回はIF文での条件分岐を勉強しようと思います。
0 件のコメント:
コメントを投稿