ExcelVBAの基本の基本
ExcelVBAを以前学んだ際のメモを記載しておく。基本の基本。
概要
VBE(Visual Basic Editor)
- 原則、「標準モジュール」としてコードを作成する。(挿入>標準モジュール)
- Ctrl+SPACEでコードアシスト。
- APIマニュアルは、ヘルプ>Microsoft Visual Basic ヘルプ から検索可能。
- 表示>ツールバー>編集 にて、便利な機能(ブロックコメントやインデントなど)を使える編集ウィンドウを表示。
※Excel2007の場合は Microsoft Officeボタン>Excelのオプション>開発タブをリボンに表示する にチェックを入れることで、VBEがメニューに表示される
モジュール構造
- モジュール
- プロシージャ(Subプロシージャ or Functionプロシージャ or Propertyプロシージャ)(Publicプロシージャ or Privateプロシージャ)
※Subプロシージャ≒マクロ
オブジェクト
- Excel上のすべての要素はオブジェクトである。
- ブック、シート、セル、グラフ、オートシェイプ、・・・
- アクティブなワークシート、選択範囲、・・・
- オブジェクトを扱う方法:プロパティ、メソッド
- プロパティ: オブジェクト名.プロパティ名
- メソッド: オブジェクト名.メソッド名
※引数は以下のように記述
メソッド名(引数名1:=設定値1, 引数名2:=設定値2)
メソッド名(設定値1, 設定値2)
構文
Subプロシージャ
Sub procedureName() 処理 End Sub
コメント
「'」から始まる行
変数
※日本語名可能
※デフォルトでは、宣言は必須でない
- 宣言を必須にする<推奨>: 標準モジュールの冒頭に Option Explicit
※宣言されていない変数を用いようとするとエラーになる。
- 宣言: Dim 変数名 [As データ型[, 変数名 ...]]
※データ型を指定すると、その変数に型に合致しない値を代入しようとするとエラー。
※データ型を省略するとVariant型と見なされる。
※オブジェクト型への代入は、Setステートメントの使用が必須。
(例:Set obj1 = Range("A1"))
- 配列: Dim 配列名(要素数) As データ型
※各要素のアクセス: 配列名(インデックス番号)
- 定数: Const 定数名 As データ型 = 値
データ型
名称 | 名 | 値 |
---|---|---|
Boolean | True, False | |
Byte | 0〜255の整数 | |
Integer | -32768〜32767の整数 | |
Long | -2147483648〜2147483647の整数 | |
単精度浮動小数点型 | Single | |
倍精度浮動小数点型 | Double | |
String | ||
Date | 西暦100年1月1日〜西暦9999年12月31日の日付および時刻 | |
オブジェクト型 | Object | オブジェクトへの参照 |
バリアント型 | Variant | 任意の種類の値 |
演算子
分類 | 演算子 | 意味 |
---|---|---|
代入演算子 | = | |
算術演算子 | + | |
算術演算子 | - | |
算術演算子 | * | |
算術演算子 | / | |
算術演算子 | ^ | べき乗 |
算術演算子 | \ | 整数商 |
算術演算子 | mod | 余剰 |
連結演算子 | & | 文字列連結 |
比較演算子 | = | |
比較演算子 | ||
比較演算子 | <= | |
比較演算子 | > | |
比較演算子 | >= | |
比較演算子 | <> | 不等号 |
比較演算子 | Is | 参照比較 |
比較演算子 | Like | 文字列比較 |
論理演算子 | Not | |
論理演算子 | And | |
論理演算子 | Or | |
論理演算子 | Xor | |
論理演算子 | Imp | |
論理演算子 | Eqv | 論理等価 |
Like の第2引数に使用できる特殊記号は下記の通り。
?: 任意の1文字
#: 任意の半角数字1文字
[文字リスト ]: 文字リスト内の1文字
[!文字リスト ]: 文字リスト外の1文字
条件分岐
If 条件式 Then 処理 ElseIf 条件式 Then 処理 Else 処理 End If
Select Case 対象 Case 値 処理 Case Else 処理 End Select
繰り返し
For 変数名 = 初期値 To 最終値 [Step 増加値] 処理 Next 変数名
For Each 変数名 In コレクション 処理 Next
Withステートメント
With オブジェクト名 .プロパティ名 .メソッド名 ・・・ End With
組み込み(※ほんの一部を抜粋)
オブジェクト
- Range("X軸Y軸")
- Range("X軸Y軸:X軸Y軸")
- Worksheets
プロパティ
- Selection
- 現在選択されているセル範囲を参照するプロパティ。
- オブジェクトを省略した場合は、アクティブなワークシート上の選択範囲。
- Cells(Row,Col)
- そのセルからの相対位置を指定する。
- Cells(1, 1)はそのセル自身を指す。
- オブジェクトを省略した場合は、アクティブなワークシートのA1セルを基点とする。
- 基点となるオブジェクト.Offset(Row, Col)
- 基点となるセルからの相対位置を指定する。
- Offset(0, 0)はそのセル自身を指す。
定数
- vbRed: 赤色
VBA関数
- msgBox()
初めての実用:全てのワークシートについて、そのシートをアクティブにして処理を実行
Sub executeForEachSheets() Dim sheet As Worksheet For Each sheet In Worksheets sheet.Activate '実行したい処理 Next End Sub
参考文献
ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本
- 作者: 立山秀利
- 出版社/メーカー: 秀和システム
- 発売日: 2007/10/23
- メディア: 単行本
- 購入: 23人 クリック: 470回
- この商品を含むブログ (20件) を見る