演習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