ユーザフォーム入門 - 住所入力フォームを作成する(6) 〜 住所入力支援
以下の説明及びサンプルはエクセル2000用のアドイン”郵便番号変換ウィザードアドイン
(ZipCode7.xla)がインストールされていることを前提としています。
インストールされていない場合にはマイクロソフト社のWEBサイトで検索し、
ダウンロードサイトから入手してください。

また、ここではテクニック集”ユーザーフォーム入門−住所入力フォームを作成する(5)
までの内容を前提としています。

(はじめに)
1.以下のサンプル1をフォームモジュールの一番最後に貼り付けます。
2.フォーム起動時のイベント(Initializeイベント)内の一番初めに以下の1行を付け足し
  ます。(サンプル1のChkRefプロシージャをフォーム起動時の一番初めに呼び出します)

  Call ChkRef

(サンプル1)
'===========================================================
Private Sub ChkRef()

    'ZipCode7.xlaの参照設定
    With ThisWorkbook.VBProject.References
        Dim i As Integer
        For i = 1 To .Count
            If .Item(i).Name = "ZipCode7" Then Exit Sub
        Next i
        .AddFromFile Application.LibraryPath & "\ZipCode7.xla"
    End With

End Sub
'===========================================================
Private Function ConvertToAddr(郵便番号 As String) As String

    Dim 県 As String * 255, 都市 As String * 255
    Dim 都市2 As String * 255, 町名 As String * 255
    Dim 町名2 As String * 255, Ret As String

    Call ZipCode7.YUBIN7_Core.fnStartYubin7
    Call ZipCode7.YUBIN7_Core.GetZipDecision(郵便番号, 県, 都市, 都市2, 町名, 町名2)

    Ret = Replace(県 & 都市 & 都市2 & 町名 & 町名2, Chr(0), vbNullString)
    Ret = Replace(Ret, Chr(32), vbNullString)

    ConvertToAddr = Ret

End Function
'===========================================================
Private Function ConvertToZip(住所 As String) As String

    Dim 郵便番号 As String * 255
    Dim ダミー As String * 255

    Call ZipCode7.YUBIN7_Core.fnStartYubin7
    Call ZipCode7.YUBIN7_Core.Yubin7(住所, 郵便番号, ダミー)
    ConvertToZip = Trim(Replace(郵便番号, Chr(0), vbNullString))

End Function
'===========================================================

(郵便番号入力による住所入力支援)
ここでは郵便番号変換アドインの機能を上記サンプルを通じて利用し、以下の2点を実現
します。

1.郵便番号テキストボックスの入力により住所1を自動入力
2.郵便番号不明の際には住所1に入力された値から郵便番号変換を行い、自動入力
※1,2ともにすべてを変換できる保証はありません。
※住所からの郵便番号変換には、住所1に県名から少なくとも町名までを入力する必要があります。

○1.住所から郵便番号への変換○
住所1のテキストボックス(txtJusho1)のExitイベントを利用し、郵便番号変換を行います。
txtJusho1_Exitイベントプロシージャを作成します。
'===========================================================
Private Sub txtJusho1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    Dim strRetVal As String

    If txtYubin.Value = "" And txtJusho1.Value <> "" Then
    
        'ConvertToAddrプロシージャを呼び出し
        strRetVal = ConvertToZip(txtJusho1.Value)
        '返り値に”ERROR"の文字が含まれている場合には変換失敗
        If strRetVal Like "ERROR*" Then Exit Sub
        '郵便番号テキストボックスに値を入力
        txtYubin.Value = Format(strRetVal, "000-0000")
    
    End If

End Sub
'===========================================================

○2.郵便番号から住所への変換○
つぎに、郵便番号テキストボックス(txtYubin)のExitイベントプロシージャを作成します。

'===========================================================
Private Sub txtYubin_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    '郵便番号が空の場合にはプロシージャを抜ける
    If txtYubin.Value = "" Then Exit Sub

    'ConvertToAddrプロシージャを呼び出し、返り値をテキストボックスに入力
    txtJusho1 = ConvertToAddr(txtYubin.Value)

End Sub
'===========================================================

上記すべての作業を終了後、フォームを実行してテスト入力を行って確認して下さい。

Excel2000



戻る


Excel Word Access VBA! モーグ