忘れないように書き出しておく。忘れても思い出せるように…か。
VBE設定やショートカットなど
Subプロシージャ
1 2 3 |
Sub マクロの名前() 内容 End Sub |
Functionプロシージャ
自分で定義した関数を作ることができる。Functionプロシージャは戻り値を指定する。Subプロシージャは戻り値を指定できない。
1 2 3 |
Function 名前() As 戻り値のデータ型 名前 = 戻り値 End Function |
対象となるもの→オブジェクトと呼ぶ
オブジェクトの集合体→コレクションと呼ぶ
デバッグ時、配列の中身が知りたい場合
メニュー→表示→ローカルウィンドウ
→stopステイトメントを使用し、確認する。
デバッグの強制終了
[Ctrl] キーを押したまま[Break]キー
複数行のコメントアウト
[表示] – [ツールバー] – [編集]にチェックを入れる。
編集ツールバーに [コメントブロック]ボタンがある。範囲選択してクリックでコメントアウト。
エラー原因
Next に対応する For がありません。
→Ifに対応するEnd Ifがない
「オブジェクトが必要です」のエラー
→オブジェクトがEmpty。たいてい、setの付け忘れ
型が一致しません
→異なる型の値を代入している。宣言はintgerなのにstringなど
ユーザー定義型は定義せれていません
→必要な組み込み定数が定義されていない。[ツール]→[参照設定]→参照可能なライブラリファイル]欄から、使いたい組み込み定数にチェックを入れる
Sub または Function が定義されていません。
→Callを使用した時、プロシージャが存在しない時表示される。
→タイプミスが原因のときも表示される(こっちのほうが体感的に多い)。その場合は、タイプミスにカーソルが合う。
具体的な書き方など
セルの値を取得
Range("A1").Value
範囲
Range("A1:B1").Value
最小インデックスは 1
セル範囲を使用する配列の場合、必ず二次元配列になっている必要がある。
2次元配列として定義するか、Variant型にする。
ワークシートを指定
Worksheets("Sheet1").Range("A1").Value
繰り返し処理で変数を使用
For i = 1 To 10
Range("A" & i).Value =...
Next i
イミディエイトウィンドウに出力
→デバッグプリント
Debug.Print 出力する式
改行をせずに出力
セミコロン「;」をつける
Debug.Print 出力する式;
次の出力ポイントにタブを入力
カンマ「,」をつける
Debug.Print 出力する式,
Nothing判定
=ではなく、ISを使用する
If 変数 Is Nothing Then
特定の時間処理を止める
sleep関数
→エクセルAPIを宣言。標準モジュールの一番上に書く。
1 |
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long |
sleep(500)
で500ミリ秒止める
他のSubプロシージャやFunctionプロシージャを呼び出す
Callステートメントを使用。Call プロシージャ名
/ Call (プロシージャ名)
引数を渡すときは引数を()で囲む。引数のない場合は()で囲まない。
outerTextプロパティとinnerTextプロパティの違い
→outerTextは、html タグも含める。innerTextは(オブジェクト内の)テキストのみ。