|
|
本章では、Excel/VBA の記述ルールやプログラムの操作対象となるオブジェクトについて説明します。 |
|
|
|
【モジュール】 |
VBAで作成したプログラムを管理するための入れ物。宣言文と複数のプロシージャーで構成されます。モジュールには以下の2種類があります。 |
標準モジュール |
汎用的なプロセジャーを作成する場合に使用します。標準モジュールで宣言した変数・定数や作成したプロシージャは、すべてのモジュールで使用することができます。 |
クラスモジュール |
ブック・シートなどのイベントプロセジャーを管理します。 |
|
|
【プロセジャー】 |
VBAコードのひとつの単位。プロセジャーから別のプロセジャーを呼び出すことができます。プロセジャーを呼び出すときは引数を指定して値を渡します。プロセジャーには以下の3種類があります。 |
イベントプロセジャー |
特定のオブジェクトの特定のイベントに応じて実行されるプロシージャでクラスモジュールで管理される。 |
Sub プロセジャー |
単独で完結する処理などを記述。実行結果を返す必要がない処理に使用。 |
Function プロセジャー |
実行結果を返す処理に使用。 |
|
|
|
|
|
|
【オブジェクト】
プログラム操作の対象になる『ブック』、『シート』、『セル』などをオブジェクトと言います。
(Application、Workbook、Worksheet、Range)
【コレクション】
同じ種類のオブジェクトの集まりをコレクションと言います。
コレクションはひとつのオブジェクトのように扱うことができます。英語の複数形で表します。
Workbooks(BookName).Activate
Workbooks.Add
ActiveWorkbook.Worksheets(1). |
|
|
|
|
|
【プロパティ】
オブジェクトが持つ属性(性質、特徴)の記述です。
(FontColorindex、FontSize)
【メソッド】
オブジェクトを動作させる記述です。メソッドは引数を持っています。 また、引数は必ず指定 しなければならないものと、省略可能なものがあります。
(Activate、Copy、Paste、Select)
|
|
|
|
|
|
Application オブジェクトは Excel アプリケーションを表し、他のすべてのオブジェクトの親になります。このオブジェクトのメンバは、通常、Excel
全体に適用されます。このオブジェクトのプロパティとメソッドを使用して、Excel の環境を制御できます。
'ウインドウを消す
Application.Visible = False
'Excel を終了する
Application.Quit |
|
|
|
|
|
ワークブックを表します。
ThisWorkbook
ActiveWorkbook |
|
|
|
|
|
ワークシートを表します。
Worksheets
ActiveWorksheet
Worksheets(1) |
|
|
|
|
|
セル及びセル範囲を表します。
Range("A1")
Range("A1:C3") '連続したセルの参照
Range("A1, C2, D5") '離れたセルの参照
Cells(2, 3) '単一セルの参照 |
|
|
|
|
|
ワークブックやワークシートなどのの「オブジェクトへの参照を代入します(アドレスを持ちます)。オブジェクト変数は4バイトの領域を持ちます。
ex.
Dim WBK As Workbook '変数WBKをワークブックを参照できるオブジェクト型で宣言
Set WBK = Workbooks("Book1.xls") '変数WBKにWorkbooks("Book1.xls")への参照を代入する
Dim Newbook As Workbook
Set Newbook = Workbooks.Add
Set Newbook = Nothing '参照をクリアします
変数を使うことで、「Workbooks("Book1.xls")」などの記述を省略できます。
|
|
|
|
|
|
ひとつのオブジェクトに対して複数のメソッドやプロパティを指定する場合、対象となるオブジェクト名を省略する記述法です。
With オブジェクト名/ユーザー定義型変数名
操作
End With
ex.
'省略形を使用しない場合
Range("A1").FontColorindex = 3
Range("A1").FontSize = 20
'省略形を使用した場合
With Range("A1")
.FontColorindex = 3
.FontSize = 20
End With |
|
|
|
|
|
【Publicモジュールレベルの宣言】
プロジェクト内のどのモジュールでも有効
Public 変数名 As String
【Privateモジュールレベルの宣言】
同じモジュール内のどのプロセジャーでも有効
Private 変数名 As String
【プロセジャーレベルの宣言】
プロセジャー内でのみ有効
Dim 変数名 As String
【変数の型】
バイト型 Byte
整数型 Integer
長整数型 Long
単精度浮動小数点型 Single
倍精度浮動小数点型 Double
通貨型 Currency
日付型 Date
文字列型 String
ブール型 Boolean
バリアント型 Variant 型を規定しないデータ型(配列の宣言で指定することが多い)
オブジェクト型 Object、Control、Workbook、Worksheet、Range・・・・
ユーザー定義型
|
|
|
|
|
|
【定数の宣言】
Const 定数名 As 型 = 定数
ex
Const A As String = "AAA"
改行マーク
CR = Chr(13) '改行コード for Macintosh
LF = Chr(10) '改行コード for Unix/Linux、UTF-8他
CRLF = Chr(13) & Chr(10) '改行コード for Windows
※メモ帳(Microsoft)
・メモ帳はUTF-8を認識するが、改行コードは文字化けする
・LFはメモ帳で開くと"↑"と表示される
|
|
|
|
|
|
【静的配列】
要素の個数が定まっている配列
ex
Dim AAA(9) As String '10の要素で構成(インデックス番号の既定値は0)
Dim AAA(9,10) As String '10×11の要素で構成(インデックス番号の既定値は0)
Dim AAA(1 To 10) As String ''10の要素で構成(このケースではインデックス番号の既定値は1)
【動的配列】
宣言時に要素の個数が定まっていない配列。インデックス番号の既定値は0
ex
Dim AAA() As String '宣言時の要素数は未定
ReDim AAA(5) '実行時に5個の要素で構成する配列として宣言しなおす(0オリジン)
ReDim Preserve AAA(10) '10個の配列に宣言し直す。これまでのデータは保持される(0オリジン)
【配列の中身をArray関数を使ってまとめて指定】
ex
Dim AAA As Variant 'Array関数を利用する場合はデータの型をVariantとする。インデックス番号の既定値は0
AAA = Array("東京",
"大阪",
"名古屋")
【配列のインデックス番号を関数で取り出す】
ex
min = LBound(AAA ) '配列AAAの最小インデックス番号
max = UBound(AAA ) '配列AAAの最大インデックス番号
|
|
|
|
|
|
算術演算子 ^(べき乗)、−(マイナス)、*(乗算)、/(除算)、¥(商)、Mod(余り)、
+(加算)、−(減算)
文字列連結演算子 &
比較演算子 =、<>、<、>、<=、>=、
Like演算子 Like '正規表現に似たマッチングを行う
Is演算子 Is
論理演算子 Not,And、Or、Xor、Eqv、Imp |
|
|
|
|
|
文字の先頭にシングルクオテーション『'』を付ける |