マルチページ内に入力フォームを設置して宛名リストを作る

fuutoatesakilisteyecatch

マルチページコントロールを設置して、その1ページにデータ入力フォームを作成します。取得データを宛名リストに追加します。エクセルベースの既存住所録も利用できます。

こんにちは、じゅんぱ店長(@junpa33)です。

封筒宛名のメインデータとなる宛名リストを作成します。

ユーザーフォームからの住所データの入手でリストを作成、データの積み上げを行うようにします。

また、既存のエクセル住所録があれば、データ項目の配列順を入れ替えるだけで、コピペ利用を可能にします。

この説明の前に、先回の記事を確認されたいという場合は、こちら↓になります。

fuutouatenaeyecatch002 封筒宛名印刷のVBA作成。基本部のユーザーフォーム

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

fuutoatenatorieyecatch 封筒宛名印刷エクセルソフトの無料DLと取説

マルチページを利用した宛名リストの作成計画

fuutoatesakilistp018
  • ユーザーフォームにマルチページを設置し、入力ボックスから宛名データを取得します。
  • 既存のエクセルベースの住所録があれば、それも利用できるようにします。
  • 宛名リストはデータを蓄積して行けるようにします。既存住所録を宛名リストに転記していれば、その後に追記していきます。
  • エクセル既存のソートツールでリスト並び替えも出来るようにします。

宛名リストで列並びの各項目は、その順番を変更することはできません。

変更はできないこともないですが、それ用のコードがまた必要になります。そこまでしなくても配置のルールを守るということで進めましょう。

マルチページの設置方法については、こちら↓の解説記事でご確認ください。

multipageeyecatch エクセルVBAマルチページ作成。秘密鍵コードで非表示化!

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

fuutoatesakilistp019

マルチページを設置し「新規追加」ページをデザイン

この様なビジュアルを考えます。マルチページのページのレイアウトはご自由に配置いただくことはできます。

青矢印の部分です。

fuutoatesakilist001

マルチページの設置とコントロールの設置方法

マルチページはユーザーフォームコントロールツールの中でも、使ってみて非常に楽しいものだと思います。

フォームのスタイルをコンパクトに納めれるだけではなく、操作のジャンル分けもきれいに行うことが出来ます。

マルチページの設置方法の実例についてはこちら↓でも確認できます。

タブで変わるページを設置する

userformmultieyecatch マルチページをユーザーフォームに設置する

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

ツールボックスボタンを押してツールを使えるようにします。

マルチページ「新規追加」のプロパティ

fuutoatesakilist002

オブジェクト名 「新規追加」
Caption 「新規追加」

「新規追加」ページ内のラベルとテキストボックス

赤矢印はラベルです。

青矢印はテキストボックスです。

fuutoatesakilist003

テキストボックスのプロパティは次のように設定します。

①テキストボックス「宛名」

fuutoatesakilist004

②テキストボックス「敬称」

fuutoatesakilist005

③テキストボックス「所属先名」

fuutoatesakilist006

オブジェクト名「宛名名」オブジェクト名「敬称」オブジェクト名「所属先名」
④テキストボックス「郵便番号」

fuutoatesakilist007

⑤テキストボックス「郵便番号」

fuutoatesakilist008

⑥テキストボックス「都道府県名」

fuutoatesakilist009

オブジェクト名「前3桁」

オブジェクト名「後4桁」

オブジェクト名「都道府県名」

⑦テキストボックス「市区町村」

fuutoatesakilist010

⑧テキストボックス「番地」

fuutoatesakilist011

⑨テキストボックス「ビル・マンション名」

fuutoatesakilist012

オブジェクト名「市区町村名」

オブジェクト名「番地他名」

オブジェクト名「BM」

⑩テキストボックス「連絡番号」

fuutoatesakilist013

オブジェクト名「連絡番号」

これらのテキストボックスに入力した値・データは、Module3に記述するプロシージャーで利用します。

テキストボックスが10個ありますので、オブジェクト名も連番式の名前(テキスト1、テキスト2とか)ではなくわかりやすい名前にした方が良いと思います。

「新規追加」ページ内のコマンドボタン

青矢印の部分です。

fuutoatesakilist017

コマンドボタンのプロパティはこのように設定します。

⑪コマンドボタン「宛名リスト整頓」

fuutoatesakilist014

⑫コマンドボタン「入力クリア」

fuutoatesakilist015

⑬コマンドボタン「発送先登録」

fuutoatesakilist016

オブジェクト名「宛名リスト整頓」
Caption 「宛名リスト整頓」
オブジェクト名「入力クリア」
Caption 「入力クリア」
オブジェクト名「発送先登録」
Caption 「発送先新規登録」

ユーザーフォームモジュールに設置コントロールのコードを記述

テキストボックスについては、特に記述はありません。

コマンドボタンのコード記述

⑪コマンドボタン「宛名リスト整頓」

module3の「宛名リストの整頓」プロシージャーを呼び出します。

vbacalleyecatch 部品化プロシージャーでCallステートメントは必須
VBA
Private Sub 宛名リスト整頓_Click()
        Call Module3.宛名リストの整頓
End Sub

⑫コマンドボタン「入力クリア」

各テキストボックスに 空白 ”” を挿入すます。

vbawithstateeyecatch With~End Withの使い方。VBAコードを簡潔に記述する
VBA
Private Sub 入力クリア_Click()
        With 宛名印刷設定
            .宛名名.Value = ""
            .敬称.Value = ""
            .所属先名.Value = ""
            .前3桁.Value = ""
            .後4桁.Value = ""
            .都道府県名.Value = ""
            .市区町村名.Value = ""
            .番地他名.Value = ""
            .BM.Value = ""
            .連絡番号.Value = ""
        End With
End Sub

⑬コマンドボタン「発送先登録」

module3の「宛名追加」プロシージャーを呼び出します。

VBA
Private Sub 発送先登録_Click()
        Call Module3.宛名追加
End Sub

標準モジュール(Module3)へのコントロールのコードを記述

コマンドボタンのコード記述

⑪コマンドボタン「宛名リスト整頓」

「宛名リスト」シートの先頭行にデータ項目を挿入します。

vbamsgboxeyecatch メッセージボックス MsgBox実際の使い方を最速に理解
VBA
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

⑬コマンドボタン「発送先新規登録」

ユーザーフォームのテキストボックスからのデータ・数値取り込みするための実例コードです。

「宛名リスト」シートに登録されているリストの最終行を調べてその次に新しいリストを追加します。

追加されるデータは、「封筒宛名印刷コントロール」の「新規追加」ページのテキストボックスの値を直接取り込みます。

vbalastcelleyecatch データ入力済セルの最終行番号を取得する
VBA
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

宛名リスト作成のまとめ

fuutoatesakilistp020

「宛名リスト」シートにダイレクトにデータを登録する方が話が早いという場合もあります。

その場合は、列項目のデータ配置を守って他ファイルからコピペしてください。(宛名リスト整頓ボタンは忘れずクリックしてください。)

今回の作成は、ユーザーフォームに「マルチページ」を設置しその1ページを使って、データ入力フォームを設置しました。

作業内容は、

  • マルチページ設置とそのうちの1ページに入力コントロールを配置
  • 入力データの取り出しとシートへの転記コード作成

でした。

「ユーザーフォームからの入力データの取り出し方」の実例としても参考にしていただけると思います。

短期間でエクセルVBAの独学習得を目指したいなら

fuutoatesakilistp021

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

vbastudyeyecatch002 エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

独習のための大切な7つのポイントは、上記記事にて解説しています。

出来るだけ多くの実例に触れること!

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

Udemy1eyecatch エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

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

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

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