マルチページを使って宛名リストを作成。封筒印字のユーザーフォームをデザイン

fuutoatesakilisteyecatch

先回に続き、封筒宛名印刷エクセルのVBAコード組み立て方についてです。

 

今回は、宛名リストの作り方についての説明を行っていきます。

コード数も多くありませんのでサクッと行きたいと思います。

 

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

 

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

封筒宛名を印刷するVBAコードの作り方。基本操作部分編

 

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

無料DL!封筒宛名印刷エクセルソフト ダウンロードと取り扱い説明。

 

封筒宛名印刷についての記事はこちらです。

「封筒宛名印刷」の記事一覧を開く

 

マルチページを使った宛名リストの作成の流れ

 

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

 

 

リスト項目の並び順については変更できませんので注意が必要です。

MEMO
変更はできないことも

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

 

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

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

 

宛名リスト作成のVBAコード

 

「封筒宛名印刷コントロール」の「新規追加」マルチページをデザインします

 

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

青矢印の部分です。

fuutoatesakilist001

 

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

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

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

 

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

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

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

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

 

 

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

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の「宛名リストの整頓」プロシージャーを呼び出します。

Private Sub 宛名リスト整頓_Click()
Module3.宛名リストの整頓
End Sub

 

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

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

Private Sub 入力クリア_Click()

  宛名印刷設定.宛名名.Value = “”
  宛名印刷設定.敬称.Value = “”
  宛名印刷設定.所属先名.Value = “”
  宛名印刷設定.前3桁.Value = “”
  宛名印刷設定.後4桁.Value = “”
  宛名印刷設定.都道府県名.Value = “”
  宛名印刷設定.市区町村名.Value = “”
  宛名印刷設定.番地他名.Value = “”
  宛名印刷設定.BM.Value = “”
  宛名印刷設定.連絡番号.Value = “”

End Sub

 

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

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

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

 

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

 

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

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

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

Sub 宛名リストの整頓()

 

Dim ans As Boolean
Dim s As Long

 

Worksheets(“宛名リスト”).Select
  ans = MsgBox(“1行目に項目名、A列にリスト通番が打たれます。” & vbCrLf & “実行していいですか?”, _
vbYesNo + vbQuestion, “確認”)

  If ans = vbYes Then
    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
    Worksheets(“宛名リスト”).Columns.AutoFit
  Else
    Exit Sub

  End If

End Sub

 

MEMO

メッセージボックスの使い方はこの記事を参考にしてください。

メッセージボックス MsgBox実際の使い方を最速に理解

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

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

 

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

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

Sub 宛名追加()

 

Dim ATRow As Long

 

Workbooks(“封筒宛名印字.xlsm”).Activate
Worksheets(“宛名リスト”).Select

 

  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
    Exit Sub
  End If

  Range(“B” & ATRow).Select

End Sub

 

MEMO

最終行番号を取得するのはこの記事を参考にしてください。

データ入力済セルの最終行番号を取得するVBAコード

 

宛名リスト作成のまとめ

 

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

ユーザーフォームを主体に使う場合は、特に、操作がユーザーフォームであったりエクセルシートであったり、あっちこっちすると使い勝手が悪くなることが多くなります。

ですので、その場合は出来るだけどちらかに固めて行った方が良いと思います。

 

今回の作成したコードは、「マルチページ」と「ユーザーフォームからの入力データの取り出し方」の実例としても参考にしていただけると思います。

 

次の記事は、一件毎の宛名印刷についてのコード組み立てを行います。

 

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

 

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

けれども、

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

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

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

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

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

重要ワード

独習によるVBA習得のキーワードは、

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

です。

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

ハッキリ言って、

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

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

 

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

 

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

 

エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておきたい内容を纏めています。

「VBA最速理解」の記事一覧を開く

 

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

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