演習17 のユーザーフォーム コード
'------- [UserForm1] -------
Dim AD As Variant
Dim AN As String
'UserForm1 の ShowModal を False に設定
Private Sub Address_Click()
'住所録データを選択
MsgBox "次に 住所録データを選択し" & Chr(13) & _
"ツール・ウィザードを実行せよ"
AD = Application.GetOpenFilename _
("住所録データ (*.xls), *.xls")
If AD = False Then
MsgBox "キャンセル"
Exit Sub
Else
'住所録データファイルを開く
If MsgBox(AD & " 選択", 1) = vbCancel Then
Exit Sub
Else
Workbooks.Open Filename:=AD
AN = ActiveWorkbook.Name
Workbooks(AN).Activate
MsgBox "次に ツール・ウィザードを実行せよ"
End If
End If
'個人シート初期入力
With Workbooks(AN). _
Worksheets("Sheet1")
TextBox1.Text = .Range("A2").Value
TextBox2.Text = .Range("B2").Value
TextBox3.Text = .Range("C2").Value
TextBox4.Text = .Range("D2").Value
TextBox5.Text = .Range("E2").Value
TextBox6.Text = .Range("F2").Value
End With
End Sub
Private Sub Address2_Click()
If TextBox1.Text = "" Then
MsgBox "最初に郵便番号変換ボタンを押す"
Exit Sub
End If
Workbooks(AN).Activate
End
End Sub
Private Sub CommandButton1_Click()
If TextBox1.Text = "" Then
MsgBox "最初にPage1の郵便番号変換ボタンを押す"
Exit Sub
End If
If SpinButton1.Min > SpinButton1.Value - 5 Then
Exit Sub
Else
SpinButton1.Value = SpinButton1.Value - 5
'ここで SpinButton1 の Change が発生
End If
End Sub
Private Sub CommandButton2_Click()
If TextBox1.Text = "" Then
MsgBox "最初にPage1の郵便番号変換ボタンを押す"
Exit Sub
End If
If SpinButton1.Max < SpinButton1.Value + 5 Then
Exit Sub
Else
SpinButton1.Value = SpinButton1.Value + 5
'ここで SpinButton1 の Change が発生
End If
End Sub
Private Sub Filter_Click()
If TextBox1.Text = "" Then
MsgBox "最初に郵便番号変換ボタンを押す"
Exit Sub
End If
Workbooks(AN).Activate
Range("A1").CurrentRegion.Select
Range("A1").Select
Selection.AutoFilter
End Sub
Private Sub Sort1_Click()
If TextBox1.Text = "" Then
MsgBox "最初に郵便番号変換ボタンを押す"
Exit Sub
End If
Workbooks(AN).Activate
Range("A1").CurrentRegion.Select
Selection.Sort _
Key1:=Range("A2"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
End Sub
Private Sub Sort2_Click()
If TextBox1.Text = "" Then
MsgBox "最初に郵便番号変換ボタンを押す"
Exit Sub
End If
Workbooks(AN).Activate
Range("A1").CurrentRegion.Select
Selection.Sort _
Key1:=Range("B2"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
End Sub
Private Sub Sample_Click()
Workbooks("sample09.xls").Activate
End
End Sub
Private Sub SpinButton1_Change()
'Max = 1000, Min = 1
If TextBox1.Text = "" Then
MsgBox "最初にPage1の郵便番号変換ボタンを押す"
Exit Sub
End If
TextBox1.Text = SpinButton1.Value
With Workbooks(AN). _
Worksheets("Sheet1")
TextBox2.Text = .Range("B" & TextBox1.Text + 1).Value
TextBox3.Text = .Range("C" & TextBox1.Text + 1).Value
TextBox4.Text = .Range("D" & TextBox1.Text + 1).Value
TextBox5.Text = .Range("E" & TextBox1.Text + 1).Value
TextBox6.Text = .Range("F" & TextBox1.Text + 1).Value
End With
End Sub
Private Sub UserForm_Initialize()
MsgBox "最初に郵便番号変換ボタンを押す"
End Sub
'------ [Module1] -------
Sub Show_UserForm()
UserForm1.Show False
End Sub
'------- [ThisWorkbook] -------
Private Sub Workbook_Open()
'ShowModal を False に設定
UserForm1.Show False
End Sub
'-----------------------------
《演習17のコードの補足》
Workbook_Open() の Open は イベントを表し、このワークブックが開いた
時にマクロを自動実行させて別のブックを開いたり、ユーザーフォームを表示
したりする場合に使用できる。
Workbooks.Open の Open は メソッドを表し、指示するファイルを開く場合
に使用でき、その際の各種のオプションのための引数が用意されている。
演習13〜演習17 において解説した一連の『郵便番号変換』の完成プログラム
を、sample09.zip として登録済み(要解凍)。
back top