ExcelVBAへの道
|
第5章 VBA基礎
1、VBA基礎知識
Excel95ではフォームを作成するときにダイアログシートで作業をしていた。
Excel97からVBEを使用するようになった。
VBEはワード97、アクセス97、パワーポイント97と共通で使用できるようになった。
VBAでできること
1、繰り返し処理の自動化
2、ユーザー定義関数の作成
3、ユーザーフォームの作成
4、ワークシート上での各種の操作
マクロの実行ボタンはフォームツールバーのコントロールにマクロを登録する。また、図形に登録することもできる。
VBAの実行ボタンはコントロールツールバーのコントロールのイベントにコードを書く。
フォームツールバーのボタンにVBAのコードを関連づけることはできない。逆にVBAのコードをフォームのボタンに関連付けることもできない。
用途に応じてマクロとVBAを使い分けることにより効率よくエクセルでソフトを作成することができる。
VBAでは操作対象を「オブジェクト」と呼びます。例)ブック、ワークシート、セル、ボタン、テキストボックス。
オブジェクトにはプロパティという詳細属性を持っています。
例
Ragne("A1").Value=10
↑ ↑
オブジェクト プロパティ
VBAはプロシージャとモジュールで構成される。
プロシージャとはVBAコードの集合のこと。つまり、プログラムコードをVBAではプロシージャと呼ぶのです。しかし、私はなるべくプロシージャではなく一般的な呼び方のコードと書いて進めるようにします。
モジュールとはプロシージャの入れ物のことで、複数のプロシージャを入れることができます。
モジュールとはVBEの左側のウィンドウにあるModuleのことです。
= は、等しいではなく右辺の値を左辺に代入するという意味です。
メソッドはオブジェクトを動作させる方法。メソッドは動詞と考えてください。
オブジェクト.メソッド メソッドの条件
↑
半角スペースが必要。
メソッドはオブジェクトにより決っている。
Application------>Quit
Workbook------->Active,Close,PrintOut,Save
Worksheet------>Activate,Move
Range---------->Activate,AutoFill,Clear,PrintOut
引数の省略方法
同じ命令でも下記のように違います。
カンマ,で区切ります。
Selection.BorderAround xlDouble ,,3
引数の名前を書いた後に、コロン等号「 := 値 」を指定する。
Selection.BorderAround LineStyle:=xlDouble, ColorIndex:=3
プロシージャ
プロシージャとはプログラムを実行する時に1つの塊として扱われるコードの集合体のことです。
プロシージャAの中で別のプロシージャBを呼びだして使うこともできます。
例)
Sub プロシージャA()
プロシージャB
End Sub
イベント
イベントとはフォーム上に配置されたボタンをクリックしたり、ダブルクリックしたりすることにより発生する出来ことのことです。
このイベントはコントロールの種類により違います。
コントロールボックスでコントロールを選択してイベントボックスでイベントを指定するとコードウィンドウに自動的にイベントプロシージャが作成されます。
ワークブックのイベント |
Open |
ブックを開いたとき |
Activate |
アクティブになったとき |
Deactivate |
アクティブでなくなったとき |
AddinInstall |
アドインとして組み込まれたとき |
AddinUninstall |
アドイン組み込み解除時 |
BeforeClose |
ブックを閉じる前 |
BeforePrint |
印刷する前 |
BeforeSave |
保存する前 |
NewSheet |
新しいシートを作成したとき |
SheetActivate |
シートがアクティブになったとき |
SheetDeactive |
シートがアクティブでなくなったとき |
SheetBeforeDoubleClick |
SheetBeforeRightClick |
SheetCalculate |
再計算したとき |
SheetChange |
セルの内容が変更されたとき |
SheetFollowHyperlink |
ハイパーリンクをクリックしたとき |
SheetSelectionChange |
シートの選択範囲を変更したとき |
WindowActivate |
ウィンドウがアクティブになったとき |
WindowDeactivate |
ウィンドウがアクティブでなくなったとき |
WindowResize |
ウィンドウのサイズを変更したとき |
PivotTableCloseConnection |
2002から |
SheetPivotTableUpdate |
2002から |
ワークシートのイベント |
Activate |
アクティブになったとき |
Deactivate |
アクティブでなくなったとき |
BeforeDoubleClick |
BeforeRightClick |
Calculate |
再計算したとき |
Change |
セルの内容が変更されたとき |
FollowHyperlink |
ハイパーリンクをクリックしたとき |
SelectionChange |
選択範囲を変更したとき |
PivotTableUpdate |
ピボットテーブルが更新されたとき |
Excelのイベント |
NewWorkbook |
新しいブックを作成したとき |
SheetActivate |
シートがアクティブになったとき |
SheetDeactive |
シートがアクティブでなくなったとき |
SheetBeforeDoubleClick |
SheetBeforeRightClick |
SheetCalculate |
再計算したとき |
SheetChange |
セルの内容が変更されたとき |
SheetFollowHyperlink |
ハイパーリンクをクリックしたとき |
SheetSelectionChange |
シートの範囲選択を変更したとき |
WindowActivate |
ウィンドウがアクティブになったとき |
WindowDeactivate |
ウィンドウがアクティブでなくなったとき |
WindowResize |
ウィンドウのサイズを変更したとき |
WorkbookOpen |
ブックを開いたとき |
WorkbookActivate |
ブックがアクティブになったとき |
WorkbookDeactivate |
ブックがアクティブでなくなったとき |
WorkbookAddinInstall |
ブックがアドインとして組み込まれたとき |
WorkbookAddinUninstall |
ブックがアドインとして組み込みを解除したとき |
WorkbookBeforeClose |
ブックを閉じる前 |
WorkbookBeforePrint |
ブックを印刷する前 |
WorkbookBeforeSave |
ブックを保存する前 |
WorkbookNewSheet |
ブックで新しいシートを作成したとき |
SheetPivotTableUpdate |
ピボットテーブルが更新されたとき |
WorkbookPivotTableCloseConnection |
ピボットテーブルレポート接続が閉じたとき |
WorkbookPivotTableOpenConnection |
ピボットテーブルレポート接続が開かれたとき |
グラフのイベント名 |
Activate |
アクティブになったとき |
Deactivate |
アクティブでなくなったとき |
BeforeDoubleClick |
BeforeRightClick |
Calculate |
更新されたデータをプロット |
DragOver |
セル範囲をグラフにドラッグ |
DragPlot |
セル範囲をグラフにドラッグアンドドロップ |
MouseDown |
マウスボタンを押した |
MouseUp |
マウスボタンを離したとき |
MouseMove |
マウスボタンを動かしたとき |
Resize |
サイズが変更された |
Select |
選択されたとき |
SeriesChange |
グラフのデータの値を変更したとき |
ユーザーフォームのイベント名 |
発生時期 |
Activate |
アクティブになったとき |
Deactive |
アクティブでなくなったとき |
Initialize |
フォームが読み込まれ表示される前 |
Terminate |
アンロードされたとき |
Resize |
サイズが変更されたとき |
QueryClose |
フォームが閉じる前 |
|
コントロールイベント名 |
発生時期 |
AddControl |
コントロールが追加されたとき |
AfterUpdate |
コントロールのデータを変更したとき |
BeforeDragOver |
ドラッグアンドドロップ操作の実行中 |
BeforeDropOrPaste |
ドロップ貼り付けをしようとするとき |
BeforUpdate |
コントロールのデータが変更される前 |
Change |
Valueプロパティを変更したとき |
Click |
クリックしたとき |
DblClick |
ダブルクリックしたとき |
DropButtonClick |
ドロップボタンをクリックした |
Enter |
フォーカスを実際に受け取る前 |
Exit |
別のコントロールにフォーカスを移す直前 |
Error |
エラーが発生したとき |
KeyDown |
キーを押した |
KeyUp |
キーを離したとき |
KeyPress |
文字キーを押したとき |
Layout |
サイズを変更したとき |
MouseDown |
マウスボタンを押したとき |
MouseUp |
マウスボタンを離したとき |
MouseMove |
マウスボタンを動かしたとき |
RemoveControl |
コントロールを削除したとき |
Scroll |
スクロールボックスを動かしたとき |
SpinUp |
上向き、右向きスピンボタンをクリックしたとき |
SpinDown |
下向き、左向きスピンボタンをクリックしたとき |
Zoom |
Zoomプロパティの値を変更したとき |
モジュール
モジュールはプログラムコード(プロシージャ)を入れる1ブロックのコードの塊のことです。
先頭部分に宣言セクション
次に実行コード部分
がセットになっているブロックです。1つのコードウィンドウ部分がモジュールの1単位と思ってください。
Public C As Integer<=======宣言セクション(変数・定数)
Public Const Rate = 0.05
Private Sub CommandButton1_Click()<======Subプロシージャ部分
Dim r, g, b As Integer
r = TextBox1.Value
g = TextBox2.Value
b = TextBox3.Value
With Selection.Interior<=====実行コード部分
.Color = RGB(r, g, b)
.Pattern = xlSolid
End With
End Sub<====Subプロシージャ終了
モジュール名の変更
- プロパティウィンドウの(オブジェクト名)の右のセルにあるModuleを任意の名前に変更する。
コードの規則性
変数・定数の名前設定の仕方
1、名前には、英字・数字・漢字・カタナカ・アンダースコアー以外の文字を使えない。
2、名前の先頭に、数字、アンダースコアーを使えない。
3、英字の大文字・小文字は区別されない。
4、名前のの文字数は半角255文字以内。
5、VBAの予約名は使えない。
6、同じモジュール内で同じ名前のコード(プロシージャ)を使うことはできない。例)Sub
プロシージャA()があれば同じコードウィンドウ内でプロシージャAは使えない。
ステートメント
ステートメントとはコード内で1つの完結した命令部分。
マルチステートメント
1行に複数のステートメントを記述したコード
複数のステートメントの間を:で区切る。
例)
MyCount =1: n=n+1
ステートメントの改行
1つのステートメントが長いときに改行してコードも見やすくできます。
半角スペースとアンダースコアーを付けます。
例)
A & _<========半角スペース+_
& B/C
コメント
説明文をコード内に書くときは、コードの先頭にシングルクォーテーションを付けると、文字列が緑色になりコメントになります。実行コードではなくなります。
ヘルプ
コード文字列上でF1キーを押すと、関連のヘルプが見れます。
|