マルチページコントロールを設置して、その1ページにデータ入力フォームを作成します。取得データを宛名リストに追加します。エクセルベースの既存住所録も利用できます。
こんにちは、じゅんぱ店長(@junpa33)です。
封筒宛名のメインデータとなる宛名リストを作成します。
ユーザーフォームからの住所データの入手でリストを作成、データの積み上げを行うようにします。
また、既存のエクセル住所録があれば、データ項目の配列順を入れ替えるだけで、コピペ利用を可能にします。
この説明の前に、先回の記事を確認されたいという場合は、こちら↓になります。

このエクセルソフト完成品をフリーダウンロードするにはこちら↓の記事からです。

封筒宛名印刷の記事編成
- 封筒宛名印刷の使い方とダウンロード
コンテンツ
マルチページを利用した宛名リストの作成計画

- ユーザーフォームにマルチページを設置し、入力ボックスから宛名データを取得します。
- 既存のエクセルベースの住所録があれば、それも利用できるようにします。
- 宛名リストはデータを蓄積して行けるようにします。既存住所録を宛名リストに転記していれば、その後に追記していきます。
- エクセル既存のソートツールでリスト並び替えも出来るようにします。
宛名リストで列並びの各項目は、その順番を変更することはできません。
変更はできないこともないですが、それ用のコードがまた必要になります。そこまでしなくても配置のルールを守るということで進めましょう。
マルチページの設置方法については、こちら↓の解説記事でご確認ください。

宛名リスト作成ためのマルチページとVBA

マルチページを設置し「新規追加」ページをデザイン
この様なビジュアルを考えます。マルチページのページのレイアウトはご自由に配置いただくことはできます。
青矢印の部分です。

マルチページはユーザーフォームコントロールツールの中でも、使ってみて非常に楽しいものだと思います。
フォームのスタイルをコンパクトに納めれるだけではなく、操作のジャンル分けもきれいに行うことが出来ます。
マルチページの設置方法の実例についてはこちら↓でも確認できます。

テキストボックス、コマンドボタンなどのコントロールの設置方法はこちら↓で確認できます。

オブジェクト名 「新規追加」
Caption 「新規追加」
赤矢印はラベルです。
青矢印はテキストボックスです。

テキストボックスのプロパティは次のように設定します。
これらのテキストボックスに入力した値・データは、Module3に記述するプロシージャーで利用します。
テキストボックスが10個ありますので、オブジェクト名も連番式の名前(テキスト1、テキスト2とか)ではなくわかりやすい名前にした方が良いと思います。
青矢印の部分です。

コマンドボタンのプロパティはこのように設定します。
ユーザーフォームモジュールに設置コントロールのコードを記述
テキストボックスについては、特に記述はありません。
module3の「宛名リストの整頓」プロシージャーを呼び出します。

Private Sub 宛名リスト整頓_Click()
Call Module3.宛名リストの整頓
End Sub
各テキストボックスに 空白 ”” を挿入すます。

Private Sub 入力クリア_Click()
With 宛名印刷設定
.宛名名.Value = ""
.敬称.Value = ""
.所属先名.Value = ""
.前3桁.Value = ""
.後4桁.Value = ""
.都道府県名.Value = ""
.市区町村名.Value = ""
.番地他名.Value = ""
.BM.Value = ""
.連絡番号.Value = ""
End With
End Sub
module3の「宛名追加」プロシージャーを呼び出します。
Private Sub 発送先登録_Click()
Call Module3.宛名追加
End Sub
標準モジュール(Module3)へのコントロールのコードを記述
「宛名リスト」シートの先頭行にデータ項目を挿入します。

Sub 宛名リストの整頓()
Dim ans, s, ATRow As Long
ans = MsgBox("1行目に項目名、A列にリスト通番が打たれます。" _
& vbCrLf & "実行していいですか?", vbYesNo _
+ vbQuestion, "確認")
If ans = vbYes Then
With Worksheets("宛名リスト")
.Range("B1") = "宛名"
.Range("C1") = "敬称"
.Range("D1") = "所属先名"
.Range("E1") = "郵便番号"
.Range("F1") = "都道府県"
.Range("G1") = "市区町村"
.Range("H1") = "番地"
.Range("I1") = "ビル・マンション名"
.Range("J1") = "連絡番号"
ATRow = .Cells(Rows.Count, 2).End(xlUp).Row
For s = 2 To ATRow
.Range("A" & s) = s - 1
Next s
.Columns.AutoFit
.Select
.Range("A1").Select
End With
Else
Exit Sub
End If
End Sub
ユーザーフォームのテキストボックスからのデータ・数値取り込みするための実例コードです。
「宛名リスト」シートに登録されているリストの最終行を調べてその次に新しいリストを追加します。
追加されるデータは、「封筒宛名印刷コントロール」の「新規追加」ページのテキストボックスの値を直接取り込みます。

Sub 宛名追加()
Dim ATRow As Long
Workbooks("封筒宛名印字.xlsm").Activate
With Worksheets("宛名リスト")
ATRow = .Cells(Rows.Count, 2).End(xlUp).Row
If 宛名印刷設定.宛名名.Value <> "" Then
.Range("B" & ATRow + 1) = 宛名印刷設定.宛名名.Value
.Range("C" & ATRow + 1) = 宛名印刷設定.敬称.Value
.Range("D" & ATRow + 1) = 宛名印刷設定.所属先名.Value
.Range("E" & ATRow + 1) = 宛名印刷設定.前3桁.Value _
& "-" & 宛名印刷設定.後4桁.Value
.Range("F" & ATRow + 1) = 宛名印刷設定.都道府県名.Value
.Range("G" & ATRow + 1) = 宛名印刷設定.市区町村名.Value
.Range("H" & ATRow + 1) = 宛名印刷設定.番地他名.Value
.Range("I" & ATRow + 1) = 宛名印刷設定.BM.Value
.Range("J" & ATRow + 1) = 宛名印刷設定.連絡番号.Value
Else
MsgBox "宛名が未記入です。" & vbCrLf & _
"登録を中止して終了します。", vbCritical, "封筒宛名印刷"
Exit Sub
End If
.Select
.Range("B" & ATRow + 1).Select
End With
End Sub
宛名リスト作成のまとめ

「宛名リスト」シートにダイレクトにデータを登録する方が話が早いという場合もあります。
その場合は、列項目のデータ配置を守って他ファイルからコピペしてください。(宛名リスト整頓ボタンは忘れずクリックしてください。)
今回の作成は、ユーザーフォームに「マルチページ」を設置しその1ページを使って、データ入力フォームを設置しました。
作業内容は、
- マルチページ設置とそのうちの1ページに入力コントロールを配置
- 入力データの取り出しとシートへの転記コード作成
でした。
「ユーザーフォームからの入力データの取り出し方」の実例としても参考にしていただけると思います。
短期間でエクセルVBAの独学習得を目指したいなら

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。

独習のための大切な7つのポイントは、上記記事にて解説しています。
出来るだけ多くの実例に触れること!
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。