Home > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > ユーザフォーム入門 - 住所入力フォームを作成する(6) 〜 住所入力支援

即効テクニック

ユーザーフォーム関連のテクニック

ユーザフォーム入門 - 住所入力フォームを作成する(6) 〜 住所入力支援

(Excel 2000)

モーグ編集部注
現在マイクロソフト社から配布されているアドインには、このテクニックで紹介されている機能が実装されていません。
このため、エラーが発生します。


以下の説明及びサンプルはエクセル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
'===========================================================
上記すべての作業を終了後、フォームを実行してテスト入力を行って確認して下さい。