封筒宛名を印刷するエクセルVBAの作り方。基本操作部分編

fuutouatenaeyecatch002

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

 

これから何回かに分けて、紹介しました封筒宛名印刷エクセルのVBAコード組み立て方について説明を行っていきます。

 

今回は、基本操作部分についての説明を行っていきます。

本題に入るまでに、エクセルBOOKの準備をしておきます。

新しくエクセルを起動して、そのエクセルBOOKを「封筒宛名印字.xlsm」として一度保存をしてください。

「マクロ有効ブック」で保存は必須です。これで、下準備OKです。

 

その前に、前回の記事を確認してみるにはこちら↓からになります。

無料DL!封筒に宛名印刷できるエクセルソフトと使い方。時短ツール

fuutoatenatorieyecatch 無料DL!封筒に宛名印刷できるエクセルソフトと使い方。時短ツール

 

封筒宛名印刷エクセル一覧
fuutouatenaeyecatch001
こんにちは、じゅんぱ店長(@junpa33)です。 今回は、結構、みなさんお悩みの宛名書きについてです。 はがきの場合は一番簡単には、年賀状ソフトを利用するという方法もありますが、 封筒への宛名書きをするには、なかなか手早く簡単にとはいかな ...
続きを読む
fuutoatenatorieyecatch
こんにちは、じゅんぱ店長(@junpa33)です。 今回は、先回紹介しました封筒宛名印刷エクセルの使い方の説明を行っていきます。 一般的には、封筒に直接印刷することは、「宛名シール」を使うパターンよりも遥かに難易度が高く思われています。 こ ...
続きを読む
fuutouatenaeyecatch002
こんにちは、じゅんぱ店長(@junpa33)です。 これから何回かに分けて、紹介しました封筒宛名印刷エクセルのVBAコード組み立て方について説明を行っていきます。 今回は、基本操作部分についての説明を行っていきます。 本題に入るまでに、エク ...
続きを読む
fuutoatesakilisteyecatch
こんにちは、じゅんぱ店長(@junpa33)です。 先回に続き、封筒宛名印刷エクセルのVBAコード組み立て方についてです。 今回は、宛名リストの作り方についての説明を行っていきます。 コード数も多くありませんのでサクッと行きたいと思います。 ...
続きを読む
fuutotandokueyecatch
こんにちは、じゅんぱ店長(@junpa33)です。 今回の封筒宛名印刷エクセルの作成では、 セルサイズを変更して、封筒サイズごとに最適な印刷ポジションを決めて行きます。その変更の方法として、変数を利用すれば微妙な調整も可能になります。 この ...
続きを読む
fuutorenzokueyecatch
こんにちは、じゅんぱ店長(@junpa33)です。 今回の封筒宛名印刷エクセルの作り方は、 封筒の宛名印字の範囲指定を、アクティブセルのRangeオブジェクトを利用して行います。テキストボックスやInputBoxへの入力指定での方法は使いま ...
続きを読む
fuutosasidasieyecatch
こんにちは、じゅんぱ店長(@junpa33)です。 今回の封筒宛名印刷エクセルは、差出人印刷についてです。 特徴は、サイズにわせて縦印刷と横印刷に対応し、また差出人を変更することもできます。 SHOP名で、個人で、ハンネで出す場合などにも使 ...
続きを読む

 

 

 

「封筒宛名印刷エクセル」のVBAコード組み立て方

 

封筒宛名印刷について、考えられる主だった設定が必要な条件は

  • 封筒のサイズ
  • 縦書きか横書きか
  • 発送便の種別
  • 宛先の印刷
  • 宛先の連続印刷
  • 差出人の印刷
  • 書体の設定
  • 宛先の入力
  • 差出人の入力
  • 既存住所録の利用
  • プリンターとの封筒サイズセッティング
  • 各封筒別の宛先項目、差出項目の印刷位置セッティング

などが考えられます。

余りにも変数になるような項目が多いので、作る前から萎えてしまいそうになります。

 

そこでまず、場面分けをします。

  1. 封筒サイズなど、印刷にかかわる前提条件・基本操作部分
  2. 宛先の登録・リスト追加にかかわる条件・新規登録
  3. 宛先の封筒への一枚印刷を行う条件・単独印刷
  4. 複数の宛先を連続して封筒に印刷する条件・連続印刷
  5. 差出人を登録し・印刷する条件・差出人項目

 

インターフェイス的にはVBAのユーザーフォームで行います。

これだけの条件設定で項目指定して行くためには、一覧表的に表示するとユーザーフォームが大型で雑多になってしまいますので、使わない部分は出来るだけ折りたたんでしまう事が重要だと思います。

また、

作成する上で特に重要なことは「封筒の種類をどれだけにするか?」ということだと思います。

2~3種類まで選べるものは他にもいろいろあるかと思います。しかしそれでは汎用的に使えるとまでは言えません。

今回、作成するエクセルソフトは、最初に封筒用紙の設定さえ行えばOKの多場面での多用途のものを考えていますので、

あえてサイズほぼ網羅の16種類のタイプでコードを組み立てたいと思います。

 

エクセルBOOK「封筒宛名印字.xlsm」の中のWorksheetsを「宛名リスト」、「差出名リスト」、「宛先」、「差出」という名前で作成しておきます。

 

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

無料DL!封筒に宛名印刷できるエクセルソフトと使い方。時短ツール

fuutoatenatorieyecatch無料DL!封筒に宛名印刷できるエクセルソフトと使い方。時短ツール

 

基本操作部分でのVBAコード組み立て

 

「封筒宛名印刷コントロール」ユーザーフォーム

「封筒宛名印刷コントロール」のフォームの中でこの部分になります。

fuutoatenakihon001

 

ユーザーフォームへのコントロールツールの配置

ユーザーフォームの設置とツールの設置方法

始めのユーザーフォームの挿入方法はこちら↓で確認できます。

ユーザーフォームを表示する

次にツールボックスを利用してコマンドツールを設置する方法はこちら↓です。

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

 

このユーザーフォーム「封筒宛名印刷コントロール」の出現表示設定については、このエクセルソフトのどの操作場面でも必要になりますので、

すべてのシートモジュールとブックモジュールに以下のコードを記述しておきます。

各シートモジュールには

Private Sub Worksheet_Activate()
If 宛名印刷設定.Visible Then Exit Sub
宛名印刷設定.Show vbModeless
End Sub

ブックモジュールには

Private Sub Workbook_Open()
If 宛名印刷設定.Visible Then Exit Sub
宛名印刷設定.Show vbModeless
End Sub

 

ユーザーフォームを設置したらプロパティのオブジェクト名「宛名印刷設定」とCaption「宛名印刷設定」を変更します。

StartUpPositionは「0-手動」にしています。

fuutoatenakihon002

 

ラベルの配置

矢印の部分に(ツールボックスからの)ラベルで文字を挿入します。

赤矢印についてはCaptionの文字表示を変化させます。オブジェクト名についても判別しやすい名称にします。

fuutoatenakihon003a

 

fuutoatenakihon004

fuutoatenakihon005

fuutoatenakihon006

①選択された封筒の印刷タイプを表示します。

オブジェクト名 TP_no
Captionは空白

②選択された封筒のサイズを表示します。

オブジェクト名 サイズ表示A
Captionは空白

③封筒が選択された時の注意を表示します。

オブジェクト名 用紙注意書き
Captionは空白

 

オプションボタンとチェックボックスの配置

この矢印の部分になります。

fuutoatenakihon007a

 

フレームの配置

緑矢印の部分です。先にツールボックスで「フレーム」を選択し「封筒宛名印刷コントロール」ユーザーフォームに設置します

 

オプションボタンの配置

先に配置したフレーム内(緑部分)にオプションボタンを配置します。

フレーム内にあるオプションボタンは同じグループ扱いになります。

封筒名の上からの並び順にボタン番号が並ぶのがきれいですが、このソフトの作成計画中の途中変更などで実際にはうまく順番には並んでいません。ここでは、3つの例示をします。すべて同様でOKです。


fuutoatenakihon008

fuutoatenakihon009

fuutoatenakihon010

オブジェクト名 OptionButton1
Captionは洋形2号

オブジェクト名 OptionButton5
Captionは長形3号

オブジェクト名 OptionButton18
Captionは長形6号

 

チェックボックスの配置

赤矢印の部分です。

fuutoatenakihon011

fuutoatenakihon012

fuutoatenakihon013

オブジェクト名 横書き1
Caption 横書き

オブジェクト名 横書き2
Caption 横書き

オブジェクト名 横書き3
Caption 横書き

 

 

コマンドボタン、トグルボタン、テキストボックス、コンボボックスの配置

コマンドボタンは青矢印、テキストボックスは赤矢印、コンボボックスは緑矢印です。

fuutoatenakihon014

 

コマンドボタン、トグルボタンの配置

 

⑩コマンドボタン

fuutoatenakihon015

⑪コマンドボタン

fuutoatenakihon018

⑫コマンドボタン

fuutoatenakihon016

⑩コマンドボタン

オブジェクト名 便名反映
Caption 便名を印刷に反映

⑪コマンドボタン

オブジェクト名 発送便クリア
Caption 発送便名クリア

⑫コマンドボタン

オブジェクト名 宛先CL
Caption 宛先シート全クリアー

 

⑬コマンドボタン
fuutoatenakihon019
⑭トグルボタン
fuutoatenakihon017
⑬コマンドボタン

オブジェクト名 差出CL
Caption 差出シート全クリア

⑭トグルボタン

オブジェクト名 封筒登録
Caption 封筒登録OFF

 

テキストボックス、コンボボックスの配置
⑮テキストボックス

fuutoatenakihon020

 

⑯コンボボックス

fuutoatenakihon021

⑮テキストボックス
オブジェクト名 差出CL
Caption 差出シート全クリア
Font MSゴシック(太字、12)
⑯コンボボックス
オブジェクト名 ComboBox1
Font MSゴシック(太字、12)

 

フォームモジュールへの各コントロールのコード記述

 

ラベルの表示

①TP_no 、②サイズ表示A 、③用紙注意書き のCaption(ラベルの表示)については、オプションボタンの操作に連動して表示するようにします。

 

オプションボタンのコード設定

  • ラベルへの表示をコントロールします。
  • プリンターの用紙確認の注意喚起のラベル表示についてはWait関数でタイムラグを作って表示します。
  • このボタンのスイッチングで「印刷のレイアウトシート(「宛先」と「差出」)」の用紙設定を変更・指定を行います。
  • 特に「ラベル①TP_no」の値はこのソフトのすべてのモジュールに適用される重要なデータになります。

 

オプションボタン1の動作コードはこのようになります。

すべてのオプションボタンのVBAコードはこちらです。

Private Sub OptionButton1_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “洋形2号”
宛名印刷設定.TP_no.Caption = “TP1”
宛名印刷設定.用紙注意.Caption = “洋形2号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C4”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4
  Worksheets(“差出”).PageSetup.PaperSize = xlPaperA4
Else
  Worksheets(“宛先”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C4”).Value
  Worksheets(“差出”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C4”).Value
End If
End Sub

 

コマンドボタン、トグルボタンのコード設定

コマンドボタン

「便名を印刷に反映」のコードは、モジュール1のプロシージャー「発送便記入」を呼び出します。

Private Sub 便名反映_Click()
Module1.発送便記入
End Sub

 

 

「発送便名クリア」のコードは、テキストボックスの値を空白にして、モジュール1のプロシージャー「発送便CL」を呼び出します。

Private Sub 発送便クリア_Click()
宛名印刷設定.発送便.Value = “”
Module1.発送便CL
End Sub

 

「宛先シート全クリアー」のコードは、モジュール1のプロシージャー「シートクリア宛先」を呼び出します。

Private Sub 宛先CL_Click()
Module1.シートクリア宛先
End Sub

 

「差出シート全クリアー」のコードは、モジュール1のプロシージャー「シートクリア差出」を呼び出します。

Private Sub 差出CL_Click()
Module1.シートクリア差出
End Sub

 

トグルボタン

「封筒登録OFF」のコードは、

  • ボタンを押すと表示が「ON」に変わり「プリンター登録封筒」ユーザーフォームが表示されます。
  • ボタンを戻すと表示が「OFF」に変わり「プリンター登録封筒」ユーザーフォームが消えます。

Private Sub 封筒登録_Click()

 

If  宛名印刷設定.封筒登録 = True Then
  プリンター登録封筒.Show vbModeless
  宛名印刷設定.封筒登録.Caption = “封筒登録ON”
  宛名印刷設定.封筒登録.BackColor = &H808080
ElseIf 宛名印刷設定.封筒登録 = False Then
  Unload プリンター登録封筒
  宛名印刷設定.封筒登録.Caption = “封筒登録OFF”
  宛名印刷設定.封筒登録.BackColor = &HE0E0E0
End If

 

End Sub

 

テキストボックス、コンボボックスのコード設定

テキストボックス

module1からのプロシージャーでデータを開います。

このモジュールシートから記入することはありません。

 

コンボボックス

プルダウンリストで表示されるデータ項目(アイテム)を指定するコードを作成します。

ここで文字フォントを設定していますが、無用なエラーを避けるため、カスタマイズする時(新たなフォントを設定する時)は

こちらで「.AddItem」を増やしてください。(Module1の関連のコードも変更することを忘れずに。)

 

Private Sub UserForm_Initialize()

 

OptionButton1.Value = True
With ComboBox1
.AddItem “MS Pゴシック”
.AddItem “MS P明朝”
.AddItem “AR P隷書体M”
.AddItem “”
End With


End Sub

 

入れ子になるユーザーフォームを作成する

 

トグルボタン「封筒登録OFF」を「ON」にしたときに「プリンター登録封筒」ユーザーフォームが表示されるようにします。

fuutoatenakihon022

 

「プリンター登録封筒」ユーザーフォーム

 

「プリンター登録封筒」ユーザーフォームのプロパティ

このようになります。

fuutoatenakihon023

オブジェクト名 プリンター登録封筒
Caption プリンター登録封筒

 

コントロールツールの配置

 

ラベルとテキストボックスの配置

ラベルは青矢印、テキストボックスは赤矢印になります。

fuutoatenakihon024

 

⑰ラベル

fuutoatenakihon025

⑱テキストボックス

fuutoatenakihon026

⑰ラベル
Caption 洋形2号
⑱テキストボックス
オブジェクト名 コード1

「A6用紙」まで18セット順番に、同様に設定配置していきます。

その他の文字・文章はラベルを使って配置してください。

 

コマンドボタンとトグルボタン、チェックボックスの配置

コマンドボタンは青矢印、チェックボックスは緑矢印となります。

fuutoatenakihon027

⑲コマンドボタン

fuutoatenakihon028

⑳コマンドボタン

fuutoatenakihon029

⑲コマンドボタン

オブジェクト名 封筒サイズ更新
Caption 封筒コード更新

⑳コマンドボタン

オブジェクト名 フォーム終了
Caption 閉じる

 

㉑コマンドボタン

fuutoatenakihon030

㉒トグルボタン

fuutoatenakihon031

㉑コマンドボタン

オブジェクト名 定数値確認
Caption 定数値確認

㉒トルグボタン

オブジェクト名 データシート表示
Caption データシート表示OFF

 

㉓チェックボックス

fuutoatenakihon032

㉓チェックボックス

オブジェクト名 CheckBox1
Caption 空欄データも登録する

入れ子フォームモジュールへの各コントロールのコード記述

 

テキストボックスのコード設定

こちらのフォームモジュールからのコントロールではなく、モジュール3のプロシージャーからの操作になります。

 

コマンドボタン、トグルボタンのコード設定

コマンドボタン

「封筒サイズ更新」のコードは、モジュール1のプロシージャ「封筒コード登録」を呼び出します。

Private Sub 封筒サイズ更新_Click()
Module1.封筒コード登録
End Sub

 

「フォーム終了」のコードは、

  • 「プリンター登録封筒」フォームを消します。
  • 「封筒宛名印刷コントロール」の「封筒登録」トグルボタンを「OFF」に戻します。
  • 「データ」シートをアンビジブルにします。

Private Sub フォーム終了_Click()

Unload プリンター登録封筒
宛名印刷設定.封筒登録.Value = False
宛名印刷設定.封筒登録.Caption = “封筒登録OFF”
宛名印刷設定.封筒登録.BackColor = &HE0E0E0
Worksheets(“データ”).Visible = False

End Sub

 

「定数値確認」のコードは、モジュール1のプロシージャ「設定用定数値」を呼び出します。

Private Sub 定数値確認_Click()
Module1.設定用定数値
End Sub

 

トグルボタン
  • ボタンを押したときに、表示を「ON」に変更します。
  • 「データ」シートを表示し、登録状況を確認できるようにします。
  • ボタンを戻したときはその逆になるようにします。

Private Sub データシート表示_Click()

If プリンター登録封筒.データシート表示 = True Then
  プリンター登録封筒.データシート表示.Caption = “データシート表示ON”
  プリンター登録封筒.データシート表示.BackColor = &H808080
  With Worksheets(“データ”)
    .Visible = True
    .Select
  End With
ElseIf プリンター登録封筒.データシート表示 = False Then
  プリンター登録封筒.データシート表示.Caption = “データシート表示OFF”
  プリンター登録封筒.データシート表示.BackColor = &HE0E0E0
  Worksheets(“データ”).Visible = False
  Worksheets(“宛名リスト”).Select
End If
End Sub

 

呼び出したModule1のプロシージャーのコード記述

 

「封筒宛名印刷コントロール」フォーム中のコントロールから

最初に、モジュールを通して共通の変数の宣言として、先頭に以下のコードを記述します。

 

MEMO

変数の宣言の場所による変数の有効範囲の違いについては、こちらの記事を参考にしてください。

vbasengeneyecatchエクセルVBA 変数の適用範囲を宣言方法でコントロールする

 

Public STY As Variant
Public TPnU As Double, TPnL As Double, TPnM As Double, TPnRo As Double
Public aR As Long, J As Long
Public aN, aKei, aSho, aYB, aK, aSK, aB, aBM, aRe

 

コマンドボタンからの呼び出し

オブジェクト 便名反映

モジュール1「発送便記入」を呼び出します。

ラベル「TP_no」のCaptionの値に対して条件分岐をさせています。

封筒のタイプによって、「宛先」シートのレイアウトが変化しますので、発送便名表示位置が変化するからです。

 

MEMO

If条件文の条件分岐の考え方については、こちらを参考にしてください。

vbaifjyokeneyecatchエクセルVBA 「If条件文」を最速に理解。条件の絞り方

With~End Withの使い方についてはこちらを参考にしてください。

vbawithstateeyecatchWith~End Withの使い方。VBAコードを簡潔に記述する

 

Sub 発送便記入()

STY = 宛名印刷設定.TP_no.Caption

If STY = “TP3” And 宛名印刷設定.横書き1.Value = False Then

  サブ項目1発送便記入
ElseIf STY = “TP1” And 宛名印刷設定.横書き2.Value = False Then

  サブ項目1発送便記入
ElseIf STY = “TP1” And 宛名印刷設定.横書き3.Value = False Then

  サブ項目1発送便記入
ElseIf STY = “TP2” Or STY = “TP6” Then
  サブ項目1発送便記入

Else
  サブ項目2発送便記入
End If

End Sub

このプロシージャーのサブとなるプロシージャが2つあります。

「サブ項目1発送便記入」プロシージャー (縦書き用)

Sub サブ項目1発送便記入()
Worksheets(“宛先”).Range(“E1:H1”).MergeCells = True
With Worksheets(“宛先”).Range(“E1”)
.Value = 宛名印刷設定.発送便.Value
.Font.Bold = True
.Font.Color = RGB(255, 0, 0)
.Orientation = xlHorizontal
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
End With
End Sub

 

「サブ項目1発送便記入」プロシージャー (横書き用)

Sub サブ項目2発送便記入()
With Worksheets(“宛先”)
.Range(“C1:D1”).MergeCells = True
.Range(“C1”).Value = 宛名印刷設定.発送便.Value
.Range(“C1”).Font.Color = RGB(255, 0, 0)
End With
End Sub

 

オブジェクト 発送便クリア

モジュール1「発送便CL」を呼び出します。

Sub 発送便CL()

Worksheets(“宛先”).Range(“E1”) = “”
Worksheets(“宛先”).Range(“C1”) = “”

End Sub

 

オブジェクト名 宛先CL

モジュール1「シートクリア宛先」を呼び出します。シートを全くのデフォルト状態に戻します。

Sub シートクリア宛先()
With Worksheets(“宛先”)
.Cells.ClearFormats
.Cells.ClearContents
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub

 

オブジェクト名 差出CL

モジュール1「シートクリア差出」を呼び出します。シートを全くのデフォルト状態に戻します。

Sub シートクリア差出()
With Worksheets(“差出”)
.Cells.ClearFormats
.Cells.ClearContents
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
End With
End Sub

MEMO

シートのクリアについてはこちらの記事を参考にしてください。

vbacleareyecatchエクセルVBA シートのクリアーを目的のメソッド別に最速理解

 

コンボボックスの値の利用

オブジェクト名 ComboBox1

コンボボックスで指定された文字フォントに切り替える設定のコードを記述します。

Sub フォント設定()

Worksheets(“宛先”).Select
Cells.Select

With Selection.Font
If 宛名印刷設定.ComboBox1.ListIndex = 0 Then
.Name = “MS Pゴシック”
ElseIf 宛名印刷設定.ComboBox1.ListIndex = 1 Then
.Name = “MS P明朝”
ElseIf 宛名印刷設定.ComboBox1.ListIndex = 2 Then
.Name = “AR P隷書体M”
Else
.Name = “MS Pゴシック”
End If
End With

Range(“A1”).Select

End Sub

 

子フォーム「プリンター登録封筒」中のコントロールから

コマンドボタン

オブジェクト名 封筒サイズ更新

チェックボックス「空欄データも登録する」がチェックされているかどうかの条件分岐を行っています。

Gotoの使い方については、

Gotoステートメントの利用法を最速に理解。毒コードと薬コード」が参考記事になります。

Sub 封筒コード登録()

Dim x As Long

Worksheets(“データ”).Visible = True
Worksheets(“データ”).Select
  For x = 1 To 18

    If プリンター登録封筒.CheckBox1.Value = False Then
      If プリンター登録封筒.Controls(“コード” & x).Value = “” Then
        GoTo step2
      Else
        Range(“C” & x + 3).Value = プリンター登録封筒.Controls(“コード” & x).Value
      End If
step2:
    Else
      Range(“C” & x + 3).Value = プリンター登録封筒.Controls(“コード” & x).Value
    End If
  Next x

End Sub

 

オブジェクト名 定数値確認

メッセージボックスで「定数値」を表示できるようにしています。

メッセージボックスの使い方は、

メッセージボックス MsgBox実際の使い方を最速に理解」をご覧ください。

Sub 設定用定数値()

Worksheets(“宛先”).Select
MsgBox “用紙設定 定数値は 「 ” & Worksheets(“宛先”).PageSetup.PaperSize & ” 」 です。”, vbOKOnly, “メッセージ”

End Sub

 

 

基本設定編まとめ

 

お疲れさまでした。

ここまで、コントロールパネルとなるユーザーフォームのベースを作ってきました。

VBAコード文字数としては、ここが一番多くなっています。

結構、いろんな種類のコントロールも利用しましたが、もっと良い使い方があればそれぞれに試してみてください。

ユーザーフォームも配置や配色のデザインは自由ですので、またオリジナルもお考え下さい。

 

次回は「宛先の新規追加」の部分について説明です。こちら↓になります。

fuutoatesakilisteyecatchマルチページを使ったエクセル封筒印字ソフトの作成!宛名リスト編

 

エクセルVBAの独習を始めるためのポイントについて vbastudyeyecatchエクセルVBAを独学で習得するためのポイントは?良書との出会いは重要 基礎知識習得のためのオンライン学習講座の参考記事 Udemy1eyecatchエクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。
  今回の記事はここまでです。
最後までご覧いただき有難うございました。

 

改訂新版 てっとり早く確実にマスターできるExcel VBAの教科書
定番参考書の改定新版が、動画付きになりもっと分かり易くなった
vbastudy022a
vbastudy023a

電子書籍版「改訂新版 てっとり早く確実にマスターできるExcel VBAの教科書」をamazonで見てみる

(著者)大村あつし
(出版社)技術評論社
(税込価格)2,508円(本体2,280円+税)

30冊を超えるExcelのマクロやVBAの解説書を執筆してきた著者による考え抜かれた本書の内容と構成。
独創的な解説手法で必ずExcel VBAが理解できます!
初級からの参考書ですが、より実践的切り口での解説をしています。
QRコードから操作の流れを動画(無音です)で確認することもできるようになりました。
文章解説と動画との関係性は、主は文章での解説、サポートが動画になります。

 

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

 

vbaintfixeyecatch
エクセルVBA関数で、数値の整数部分だけを分離します。 整数値取得のFix関数でなくInt関数の使用の場合でも、 他の関数との組み合わせで解決することが出来ます。 こんにちは、じゅんぱ店長(@junpa33)です。 今回のテーマは、数値の整 ...
続きを読む
vbarndeyecatch
エクセルVBAのRnd関数で乱数を取得します。 実用のためにはコードに簡単な加工をする必要があります。特に乱数値の整数化とRandomizeは必須です。 6.5兆通りのパスコードの生成方法も解説しています。 こんにちは、じゅんぱ店長(@ju ...
続きを読む
vbaroundupdowneyecatch
エクセルVBA 数値の切り上げ、切り捨てをするときには注意しなければいけません。 RoundUp関数とRoundDown関数を使う時に負の数が混在していると、そのままだと誤った計算結果になることがあります。 こんにちは、じゅんぱ店長(@ju ...
続きを読む
vbaroundeyecatch
エクセルVBAでも数値を四捨五入したい時は、Round関数を利用することが多いです。 Round関数の使い方はワークシートと同様ですが、ただ大きな注意点があります。 ここではその注意点も含めて使い方の説明を行います。 こんにちは、じゅんぱ店 ...
続きを読む
vbamaxminaveeyecatch
エクセルVBAで、ワークシート関数 Max・Min・Averageを利用して最大値・最小値・平均を求めます。 「簡単で短いエクセルVBAコード組み立て」を目指す上では、ワークシート関数は強い味方です。 こんにちは、じゅんぱ店長(@junpa ...
続きを読む
vbainsteeyecatch
InStr関数・InStrRev関数は、文字列操作系の関数の中でも最重要です。 この関数により指定の文字(列)の存在位置が取得できます。 そしてそれを目盛基準として、文字列操作をすることもできます。 こんにちは、じゅんぱ店長(@junpa3 ...
続きを読む
vbareplaceeyecatch
エクセルVBAで使える関数にReplace関数があります。 Replace関数は検索の文字列を指定の文字列に置換したり、削除したり出来ます。 利用価値の高い関数です。使い慣れておきましょう。 こんにちは、じゅんぱ店長(@junpa33)です ...
続きを読む
vbaselectcaseeyecatch
エクセルVBAで、必須の条件文。 その中の一つで、Select Case 条件分岐 ステートメントの使い方を説明します。 簡単なコード、可読性の向上が特徴のステートメントです。是非、知っておきましょう。 こんにちは、じゅんぱ店長(@junp ...
続きを読む
VBAValeyecatch
エクセルVBAのVal関数の使い方についてです。 「値を文字列型から数値型へ変換する」という機能があります。 データ型が不一致の場合、プログラムエラーでコード停止が発生することが良くあります。 こんにちは、じゅんぱ店長(@junpa33)で ...
続きを読む
VBAStringeyecatch
エクセルVBA String関数の使い方についてです。 「文字を指定した数だけ並べることが出来る」という機能の関数です。 この関数を使えば簡潔なコード記述で実行することが出来ます。 こんにちは、じゅんぱ店長(@junpa33)です。 今回は ...
続きを読む
vbajoineyecatch
エクセルVBAでJoin関数の使い方について説明します。 文字列を接続する関数ですが、 配列変数で文字列を要素化した時にはこれを使います。 また「区切り文字」も自由に設定できます。 こんにちは、じゅんぱ店長(@junpa33)です。 今回は ...
続きを読む
vbamideyecstch
エクセルVBAで文字列操作は、コード作成の中でも重要な部分です。 Mid・Right・Left関数は、その操作の中で重要な働きをする関数です。 文字列を切り出すこの関数の基本部分を説明します。 こんにちは、じゅんぱ店長(@junpa33)で ...
続きを読む
vbatrimeyecatch
Trim・RTrim・LTrimは文字列の端にあるスペースを取り除きます。 ちょっとのことですが、取り込みデータにスペースが付いていることでのエラーは発見修正が結構厄介です。 注意が必要です。 こんにちは、じゅんぱ店長(@junpa33)で ...
続きを読む
vbastrcstreyecatch
エクセルVBAで、Str関数とCStr関数に使い方とその違いについて説明します。 戻り値にちょっとした違いがあります。 使い方の違いでその後のコードの進行に影響が出ることがあり、なおざりにはできません。 こんにちは、じゅんぱ店長(@junp ...
続きを読む
vbaleneyecatch
Len関数の使い方ついて説明します。 エクセルVBAでプログラミングを行う時に、テキストデータを加工処理するには必須の関数です。 非常に有用な関数ですので、是非使えるようになっておきましょう。 こんにちは、じゅんぱ店長(@junpa33)で ...
続きを読む
VBACheckBoxeyecatch
エクセルシートで使う場合の、2種類あるチェックボックスの設置と使い方の違いを解説します。 一見簡単そうですが、 単純でない使い方をしたい時は、設置方法と設定方法を工夫する必要があります。 こんにちは、じゅんぱ店長(@junpa33)です。 ...
続きを読む
VBAOptionbuttoneyecatch
エクセルで書類を作成する時、項目を選択できるようにするのがオプションボタンです。 これには2種類あり、使い方にかかわる違いもあります。 詳しいオプションボタン設置方法と使い方のコツを解説します。 こんにちは、じゅんぱ店長(@junpa33) ...
続きを読む
vbamojisousaeyecatch
エクセルVBAコードで、ファイルの保存時に名前を付けて保存について、その時の年月日を付けたい時の設定方法についてです。 保存されたファイルがたくさん増えて行く中で、ファイルの判別で年月日を付けている(付けたいと思っている)人も多いでしょう。 ...
続きを読む
vbajyufukueyecatch
今回は、同じ項目を一つにまとめるためのエクセルVBAコードを紹介します。 多数銘柄の商品を複数の店で扱っている場合、商品銘柄集計表を作るには、商品銘柄の種類だけをリストにしないといけません。 こんにちは、じゅんぱ店長(@junpa33)です ...
続きを読む
vbafolderdeleteeyecatch
今回は、不要なフォルダをサクッと削除するエクセルVBAコードを紹介します。 削除の仕方は2つあります。VBA自身の機能を使うことと、FSOの機能を使うことの2つです。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAで、不 ...
続きを読む
vbadirkilleyecatch
今回は、フォルダに保存されている要らないファイルを削除するエクセルVBAコードを紹介します。 フォルダを開いて一つずつファイル名を確認して、ではなくて、コード実行一発でササッと完了します。 こんにちは、じゅんぱ店長(@junpa33)です。 ...
続きを読む
vbachdireyecatch
エクセルVBAのステートメントで「ChDir(チェインジディレクトリ)」というのがあります。 少々地味感のあるステートメントですが、この使い方のポイントを説明いたします。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAの ...
続きを読む
vbafindeyecatch001
今回は、データの検索方法で、エクセルVBAでできるメソッドについてです。 「FindとFindNextメソッド」の使い方と最速理解のコードの組み立て方を説明したいと思います。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルの検 ...
続きを読む
今回も、エクセルVBAで利用できるワークシート関数についてがテーマです。 この記事では、データナンバーなどから、その必要な値や数値を抽出する「Vloolup関数」について使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です ...
続きを読む
vbaindexeyecatch001
今回も、エクセルVBAで利用できるワークシート関数についてがテーマです。 この記事では、データリストから必要な値や数値を取り出してくる「Index関数」について使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセ ...
続きを読む
vbamatcheyecatch001
エクセルVBAで利用できる関数についてがテーマです。 今回は、データリストから必要な値や数値を取り出してくる「Match関数」について、使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAでよく使うワーク ...
続きを読む
vbahairetu3eyecatch
エクセルVBAで変数を利用するとき、二次元配列変数を知っていれば何かと便利なことがあります。 今回はそんな配列変数をより実際に近い例題で説明していきます。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAのプログラムでは、 ...
続きを読む
vbahairetu2eyecatch
エクセルVBAで配列を利用する時、それに関わる関数やステートメントを利用すれば、 より簡潔にコードを作成することが出来ます。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBA 配列を扱うときに利用できる関数とステートメント ...
続きを読む
vbahairetueyecatch
エクセルVBAで変数を利用するとき、複数の同じ型で変数を設定したいときがあります。 そんな時、出番となるのが配列変数ということです。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAの1次元配列変数の使い方を説明します。 ...
続きを読む
vbabuttoneyecatch
エクセルVBAのプログラムを実行するのに、ワークシート上に設置したボタンのクリックでワンポチっとで行いたい。 そんなボタンの簡単設置方法を紹介します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAで、シートにマクロ(プ ...
続きを読む
vbasumeyecatch
エクセルVBAで、羅列された数値の集計作業をパパッと熟していきたいときがありますよね。 それを簡単に行える方法としてSUM関数があります。今回はこのSUM関数の使い方についてです。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセ ...
続きを読む
vbainputboxeyecatch
エクセルVBAのプログラムで、利用者からの入力データを取り込んでコードを実行していくことがあります。 その簡潔な方法としてInputBoxがあります。今回はこのInputBoxの使い方についてです。 こんにちは、じゅんぱ店長(@junpa3 ...
続きを読む
vbalastcelleyecatch
エクセルVBAのプログラム作成で、入力データをその都度蓄積していく場合など、 既にデータの入っている最終セルの位置を調べたいという時が多くあります。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAのコード組み立てで、デー ...
続きを読む
vbawithstateeyecatch
エクセルVBAのコードの組み立てでは、視認性や可読性を上げるためにできるだけ記述を簡潔にしたいところです。 Withステートメントは、そういったコード記述を簡潔にする役割があります。 こんにちは、じゅんぱ店長(@junpa33)です。 エク ...
続きを読む
vbacleareyecatch
エクセルVBAでシートを再利用するために、一度内容すべてをクリアしたい時があります。 普通は、Clearメソッドを使ってクリア操作を行いますが・・・ こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAを組み上げる中で、シート ...
続きを読む
vbaoffseteyecatch
エクセルVBAで、セルやセルの選択範囲を移動させるのにOffsetプロパティがあります。 今回の「VBA最速で理解」は、この便利な「Offsetプロパティ」の使い方について説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エ ...
続きを読む
vbanameeyecatch
エクセルVBAで、アクティブセル、アクティブシート、アクティブブックという「現在参照中の・・・」というオブジェクトがあります。 今回の「VBA最速で理解」は、この「ActiveWorkbook」「ActiveSheet」「ActiveCel ...
続きを読む
vbaselacteyecatch
エクセルVBAで、そのコードを実行する先のオブジェクトに、フォーカスするためのメソッドに、「Select」と「Activate」があります。 今回は、このよく似た「Select」と「Activate」について説明します。 こんにちは、じゅん ...
続きを読む
vbavbekidoeyecatch
エクセルVBAを始めようとしたときに一番最初に戸惑うのが、「どうしたらVBAコードを書く表示画面になるのか?」だと思います。 今回は、この「どうしたら、その画面になるんだろう?」についての方法を説明します。 こんにちは、じゅんぱ店長(@ju ...
続きを読む
vbamsgboxeyecatch
エクセルVBAでユーザーフォームを使わなくても、簡単なユーザーとのやり取りならメッセージボックスでも可能です。 今回は、この「ユーザーへのメッセージや選択肢を提示する」ユーザーフォームについての説明をします。 こんにちは、じゅんぱ店長(@j ...
続きを読む
vbadoloopeyecatch
以前の記事でも書いたように、エクセルを使った業務で、「ループの処理」コードは重要な実行処理部分です。 今回は、このもう一つの「ループの処理」である「実行回数が限定されないループ処理」を行うコードについて説明します。 こんにちは、じゅんぱ店長 ...
続きを読む
vbafoldereyecatch
エクセルを使った業務で、「作成したファイルの保存」は作業の最後に必ず必要な部分です。 今回は、この「作成したファイルの保存」を行うための重要部分。保存先フォルダをVBAで指定する方法を説明します。 こんにちは、じゅんぱ店長(@junpa33 ...
続きを読む
vbasengeneyecatch
エクセルVBAのコード組み立てで使う変数。「この変数を使いますよ!」というのが「変数の宣言」です。 今回は、この変数の宣言についてです。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBA のコード組立ての中で、変数の宣言は ...
続きを読む
vbaifjyokeneyecatch
エクセルVBAのコード組み立てで最も必要な、最もよく使うメソッドの1つで「If~Then~Else」があります。 今回はこの「If~Then~Else」メソッドについて設定条件の絞り方のポイントを説明します。 こんにちは、じゅんぱ店長(@j ...
続きを読む
VBACopyeyecatch
エクセルVBAのコード組み立てで、よく使うメソッドの1つで「Copy」メソッドがあります。 今回はこの「Copy」メソッドの使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルVBAで、ワークシートのコピーをを ...
続きを読む
VBAGotoeyecatch001
エクセルVBAのコードで、Gotoステートメントは嫌われ系のグループにはいっています。 それでも、GotoがあるのでVBAコード組み立てがスムーズに、楽に、なる事も多いと言うのも事実です。 こんにちは、じゅんぱ店長(@junpa33)です。 ...
続きを読む
fornextirekoeyecatch
エクセルVBAのコード組み立てで、非常によく使うステートメントの一つにFor~Nextでのループ処理があります。 今回はこのFor~Nextステートメントの使い方を説明します。 こんにちは、じゅんぱ店長(@junpa33)です。 エクセルV ...
続きを読む

 

<追加補足資料>

すべてのオプションボタンのVBAコード

Private Sub OptionButton1_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “洋形2号”
宛名印刷設定.TP_no.Caption = “TP1”
宛名印刷設定.用紙注意.Caption = “洋形2号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C4”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4
  Worksheets(“差出”).PageSetup.PaperSize = xlPaperA4
Else
  Worksheets(“宛先”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C4”).Value
  Worksheets(“差出”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C4”).Value
End If
End Sub

 

Private Sub OptionButton2_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “洋形3号”
宛名印刷設定.TP_no.Caption = “TP1”
宛名印刷設定.用紙注意.Caption = “洋形3号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C5”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4
  Worksheets(“差出”).PageSetup.PaperSize = xlPaperA4
Else
  Worksheets(“宛先”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C5”).Value
  Worksheets(“差出”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C5”).Value
End If
End Sub

 

Private Sub OptionButton3_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “洋形4号”
宛名印刷設定.TP_no.Caption = “TP2”
宛名印刷設定.用紙注意.Caption = “洋形4号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C6”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4
  Worksheets(“差出”).PageSetup.PaperSize = xlPaperA4
Else
  Worksheets(“宛先”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C6”).Value
  Worksheets(“差出”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C6”).Value
End If
End Sub

 

Private Sub OptionButton4_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “洋長形3号”
宛名印刷設定.TP_no.Caption = “TP3”
宛名印刷設定.用紙注意.Caption = “洋長形3号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C7”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4
  Worksheets(“差出”).PageSetup.PaperSize = xlPaperA4
Else
  Worksheets(“宛先”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C7”).Value
  Worksheets(“差出”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C7”).Value
End If
End Sub

 

Private Sub OptionButton13_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “長形1号”
宛名印刷設定.TP_no.Caption = “TP4”
宛名印刷設定.用紙注意.Caption = “長形1号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C8”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4
  Worksheets(“差出”).PageSetup.PaperSize = xlPaperA4
Else
  Worksheets(“宛先”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C8”).Value
  Worksheets(“差出”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C8”).Value
End If
End Sub

 

Private Sub OptionButton14_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “長形2号”
宛名印刷設定.TP_no.Caption = “TP5”
宛名印刷設定.用紙注意.Caption = “長形2号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C9”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4
  Worksheets(“差出”).PageSetup.PaperSize = xlPaperA4
Else
  Worksheets(“宛先”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C9”).Value
  Worksheets(“差出”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C9”).Value
End If
End Sub

 

Private Sub OptionButton5_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “長形3号”
宛名印刷設定.TP_no.Caption = “TP3”
宛名印刷設定.用紙注意.Caption = “長形3号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C10”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4
  Worksheets(“差出”).PageSetup.PaperSize = xlPaperA4
Else
  Worksheets(“宛先”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C10”).Value
  Worksheets(“差出”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C10”).Value
End If
End Sub

 

Private Sub OptionButton15_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “長形4号”
宛名印刷設定.TP_no.Caption = “TP6”
宛名印刷設定.用紙注意.Caption = “長形4号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C11”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4
  Worksheets(“差出”).PageSetup.PaperSize = xlPaperA4
Else
  Worksheets(“宛先”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C11”).Value
  Worksheets(“差出”).PageSetup.PaperSize = Worksheets(“データ”).Range(“C11”).Value
End If
End Sub

 

Private Sub OptionButton6_Click()

宛名印刷設定.プリンター注意.Caption = “”
宛名印刷設定.用紙注意書き.Caption = “”
宛名印刷設定.サイズ表示A.Caption = “長形40号”
宛名印刷設定.TP_no.Caption = “TP6”
宛名印刷設定.用紙注意.Caption = “長形40号”
Application.Wait Now() + TimeValue(“00:00:01”)
宛名印刷設定.用紙注意書き.Caption = “先ず、プリンターの用紙設定をしてください。”
If  Worksheets(“データ”).Range(“C12”).Value = “” Then
  Worksheets(“宛先”).PageSetup.PaperSize = xlPaperA4<