◆フォームのコントロールの動作を決めるコードを記述する
フォームを活用することで使いやすいユーザーインターフェースを持たせることが
できます。
サンプルアプリケーションで使用しているブックやシートを選択する
フォームのコントロールの動作を決めるコード部分の紹介です。
example3 で説明します。
VBEのメニューで、[表示]−[コード] を実行してください。
右側にコードウィンドウが表示されます。
コードウィンドウの上の左側はオブジェクトボックスで、
右側がプロシージャーボックスです。
プロシージャーボックスを Click にして、オブジェクトボックスで
OKButton,CancelButton, を順番に選択してください。
オブジェクトボックスを UserForm にして、プロシージャーボックスで
Initializeを選択してください。
上記操作の過程で、 Sub UserForm_Click() が挿入されるかも知れませんが、
使わないので削除してかまいません。
挿入されたコードに実際の動作を追記します。
Private Sub UserForm_Initialize()
If SelectInit_Book_or_Sheet = 0 Then
For i = 1 To Workbooks.Count
Me.Controls("ListBox1").AddItem (Workbooks(i).Name)
Next
Else
For i = 1 To Sheets.Count
Me.Controls("ListBox1").AddItem (Sheets(i).Name)
Next
End If
End Sub
◇Sub UserForm_Initialize
Sub UserForm_Initialize は、フォームを表示する最初に Call されます。
ここで、リストボックスに Book または sheet の一覧を表示しています。
Me とは、UserForm のことです。
SelectInit_Book_or_Sheet はグローバル変数として定義してあります。
SelectInit_Book_or_Sheet=0 でリストボックスに Book の一覧を表示して
います。それ以外は sheet の一覧を表示させています。
Private Sub OKButton_Click()
SelIndex = Me.Controls("ListBox1").ListIndex + 1
Unload Me
End Sub
◇Sub OKButton_Click()
OKボタンがクリックされると、Sub OKButton_Click が Call されます。
SelIndex はグローバル変数として定義してあります。
SelIndex = Me.Controls("ListBox1").ListIndex + 1
上から何番目の Book または sheet が選択されたかを SelIndex に代入し
ます。ListIndex は ゼロから始まるので + 1 をしています。
Unload Me で最後にメモリからフォームオブジェクトを開放します。
Private Sub CancelButton_Click()
SelIndex = -1
Unload Me
End Sub
◇Sub CancelButton_Click()
OKボタンがクリックされると、Sub OKButton_Click が Call されます。
キャンセルボタンが押された場合には、SelIndex に -1 を代入します。
フォームから抜けたときにキャンセルが押されたことを分かるようにして
おきます。