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キーを押すと、関連のヘルプが見れます。