オプションボタン・チェックボックス・コマンドボタンをシートに設置。のし書き作成

noshigakisyousai2eyecatch

「のし書き作成エクセルソフト」のVBAコード組み立ての解説を行っています。

今回は、選択項目の選択方法でシート上に、
コントロール(オプションボタン・チェックボックス・コマンドボタン)を配置します。

 

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

今回も先回の続きの、「のし書き作成エクセルソフト」のVBAコード組み立ての解説を行っていきます。

のし書き作成エクセルソフトの「設定」シートの作り方についての第2回です。

 

オプションボタン・チェックボックス・コマンドボタンを
詳細設定シートに設置します。

 

先回の記事で詳細設定シートの作表と項目表示のエクセルVBAを組み立てました。

 

今回は、その表示された項目を選択するためのコントロールとして、

オプションボタンとチェックボックス、記述したVBAコードを起動するコマンドボタンを設置します。

 

今回設置するこのようなコントロールは、ユーザーフォーム上でよく利用しますが、

ワークシート上でも簡単に利用することが出来る方法を紹介します。

 

コントロール設置のエクセルVBA組み立てのポイント

 

各コントロール(オプションボタン・チェックボックス・コマンドボタン)について、

それぞれの特徴を押さえておきます。

 

まず今回、オプションボタンを利用した理由は、「9つの設定項目一覧表」の中で選択項目を選ぶのに、

” クリック一つで ” 簡単に選択できるという理由からです。

ただしこれを機能させるためには

「9つの設定項目の一覧表」別に ” どれか一つを選択できる設定にする。” ことが必要になります。

デフォルトの設定ではそのようになっていません。

 

また、チェックボックスは非常に便利に使えますが、ちょっと注意しないといけないことがあります。

チェックボックスは、 ” チェックされた!(チェックマークが付いた) ”

というイベントに対して「True」という答えを返す機能があります。

逆に、 ” チェックマークを外した ” というイベントに対しては「False」を返してきます。

ですので、チェックボックスを使う場合は、If条件文で条件分岐させることが必要になります。

 

前回記事までの仕上がり

 

先回までに行った作業で、「設定」シートはこのような状態になっています。

今回はそれぞれの選択項目の左のセル(チェック欄)に、

オプションボタンやチェックボックスを配置します。

noshigakisettei001a

 

今回記事での作業完了状態

 

今回の作業終了時には「設定」シートはこのような状態になっています。

noshigakisettei004

 

エクセルVBA組み立ての各ポイント詳細

 

オプションボタンの設置

 

MEMO

オプションボタンの挿入方法はこちらの記事を参考にできます。

VBAOptionbuttoneyecatchエクセルワークシートへのオプションボタン設置方法の詳細と使い方のコツ

 

オプションボタンを設置していきます。

全部で61か所になります。

設置自体はすべて同じ作業になりますので、同様の作業を順番に行ってください。

noshigakisettei005

矢印下001

noshigakisettei006a

「開発」タブ→「挿入」→「ActiveX オプションボタン」

noshigakisettei007a

シートに設置し、即 右クリックでコピーを選択

矢印下001

オプションボタンをコピーしましたので、

あとは、ひたすらペーストしていってください。

noshigakisettei008

 

チェックボックスの設置

 

MEMO

チェックボックスの挿入方法はこちらの記事を参考にできます。

VBACheckBoxeyecatch【2種類のチェックボックス】エクセルシートへの設置と使い方の違いを解説

 

チェックボックスもオプションボタンと要領は同じです。

noshigakisettei009a

(設置方法はオプションボタンを参考に)

 

コマンドボタンの設置

 

MEMO

コマンドボタンの設置方法はこちらの記事も参考になります。

vbabuttoneyecatchエクセルVBA コマンドボタンをシートに設置する2つの方法

 

コマンドボタンを設置します。

noshigakisettei012a

コマンドボタンのプロパティ設定変更

 

noshigakisettei013a

オブジェクト名 設定確定  Caption 1.設定確定ボタン

オブジェクト名 設定欄リセット Caption 設定欄リセット

オブジェクト名 熨斗印刷  Caption 2.熨斗印刷ボタン

オブジェクト名 熨斗書き保存  Caption 3.熨斗書きシート保存

と、してください。

 

設置完了したら次の作業です

 

このように出来ましたでしょうか?

noshigakisettei004

 

出来上がったところで次の作業です。

「開発」タブでデザインモードをクリックします。

noshigakisettei010a

そのあと、ひたすら設置したオプションボタンをダブルクリックしていきます。

すべてのオプションボタンをダブルクリックしてください。

 

シートモジュールへのVBAコード記述(オプションボタン)

 

シートモジュールにエクセルVBAコードが記入されていきます。

コード

Option Explicit

Private Sub OptionButton1_Click()

End Sub

Private Sub OptionButton2_Click()

End Sub

以下 続きます。

 

オプションボタンがクリックされた時、そのボタンに対応する項目が選択されたことになります。

その選択された項目が「項目選択済み一覧」にその都度表示されるようにVBAコードを作ります。

コード

Private Sub OptionButton1_Click()

    Range("I25") = Range("C4").Value

End Sub

Private Sub OptionButton2_Click()

    Range("I25") = Range("C5").Value

End Sub

 

「項目選択済み一覧」の表示位置に注意しながら、順次続けてVBAコードの作成を行っていきます。

 

オプションボタンのプロパティ設定変更

オプションボタンを同じシートに複数設置した場合

デフォルトでは、設置したすべてのオプションボタンは一つの同じ(シート名の)グループとみなされます。

何が起こるかというと、『 100個のオプションボタンを設置しても、選択できるのはたった一つ』

と、いうことになります。

そこで、9つの設定項目一覧ごとに「グループ設定」を行って、9つの一覧表ごとに選択できるように変更します。

ポイント

  • オブジェクト名 を確認します。
  • Caption は空欄にします。
  • GroupeName はお好きな名前でOK。他グループとの同名は不可。

noshigakisettei011a

 

シートモジュールへのVBAコード記述(チェックボックス)

 

この「のし書き作成エクセルソフト」の「設定」シートで利用するチェックボックスは、

「贈り主名併記」設定項目のオプションボタンと連携して機能するようになっています。

つまり、

「贈り主名入れ表書き」設定項目のチェックボックスが幾らチェックONされても、

「贈り主名併記」設定項目のオプションボタンの条件に合わなければ、

「贈り主名入れ表書き」設定項目のチェックボックスが無効化されるような仕組みになっています。

このシートモジュール上では、

オプションボタンとチェックボックスの設定が正しいかどうかを判定するVBAコードを組んでいます。

 

MEMO

一次元配列変数(動的配列)の使い方について詳しくはこちらです。

1次元配列変数の利用法。静的配列と動的配列を最速に理解する

 

コード

'併記する人数をチェックします
Private Sub commandbutton1_Click()

    Dim P As Long, i As Long, E As Long
    
'チェックボックスを配列変数にセット
        Dim Cheb(5) As Object
        Set Cheb(1) = CheckBox3
        Set Cheb(2) = CheckBox4
        Set Cheb(3) = CheckBox5
        Set Cheb(4) = CheckBox6
        Set Cheb(5) = CheckBox7
        P = 0
        If Worksheets("設定").Range("I39") = "併記しない" Then
            E = 1
        ElseIf Worksheets("設定").Range("I39") = "2人併記" Then
            E = 2
        ElseIf Worksheets("設定").Range("I39") = "3人併記" Then
            E = 3
        End If
        
'チェックボックスがチェックされている合計数を調べている
        For i = 1 To 5
            If Cheb(i).Value = True Then
                P = P + 1
            End If
        Next
    
        If P >= E + 1 Then
            MsgBox "チェック項目最大数を超えています。"
            
'設定数に合わない場合はチェックボックス全クリアする
            For i = 1 To 5
                Cheb(i).Value = False
            Next
        End If

End Sub

 

シートモジュールへのVBAコード記述(コマンドボタン)

 

VBAコード参考記事
ここの説明で出てくるVBAコードの参考にしていただける記事です。

vbacalleyecatch Callステートメントはプロシージャーの部品化に必須項目 エクセルVBA最速理解

コマンドボタンで呼び出す、標準モジュールのプロシージャーは

今の段階では作成していませんが、

次の段階で、このような名前で作成します。

コード

Private Sub 設定確定_Click()

    commandbutton1_Click
    Call Module1.設定決め

End Sub

Private Sub 設定欄リセット_Click()
    Call Module2.設定欄作成
End Sub

Private Sub 熨斗印刷_Click()
    Call Module1.熨斗テンプレベースB
End Sub

Private Sub 熨斗書き保存_Click()
    Call 熨斗シート保存
End Sub

 

シートモジュールのVBAコード全体

 

シートモジュールのVBAコード全体
コード

Option Explicit

'併記する人数をチェックします
Private Sub commandbutton1_Click()

    Dim P As Long, i As Long, E As Long
    
'チェックボックスを配列変数にセット
        Dim Cheb(5) As Object
        Set Cheb(1) = CheckBox3
        Set Cheb(2) = CheckBox4
        Set Cheb(3) = CheckBox5
        Set Cheb(4) = CheckBox6
        Set Cheb(5) = CheckBox7
        P = 0
        If Worksheets("設定").Range("I39") = "併記しない" Then
            E = 1
        ElseIf Worksheets("設定").Range("I39") = "2人併記" Then
            E = 2
        ElseIf Worksheets("設定").Range("I39") = "3人併記" Then
            E = 3
        End If
        
'チェックボックスがチェックされている合計数を調べている
        For i = 1 To 5
            If Cheb(i).Value = True Then
                P = P + 1
            End If
        Next
    
        If P >= E + 1 Then
            MsgBox "チェック項目最大数を超えています。"
            
'設定数に合わない場合はチェックボックス全クリアする
            For i = 1 To 5
                Cheb(i).Value = False
            Next
        End If

End Sub

'熨斗サイズ→
Private Sub OptionButton1_Click()

    Range("I25") = Range("C4").Value

End Sub

Private Sub OptionButton2_Click()

    Range("I25") = Range("C5").Value

End Sub

Private Sub OptionButton3_Click()
     
    Range("I25") = Range("C6").Value

End Sub

Private Sub OptionButton4_Click()
    
    Range("I25") = Range("C7").Value

End Sub

Private Sub OptionButton5_Click()

    Range("I25") = Range("C8").Value

End Sub  '←熨斗サイズ

'贈り主名印字スタイル→
Private Sub OptionButton11_Click()
    
    Range("I31") = Range("I4").Value

End Sub

Private Sub OptionButton12_Click()
    
    Range("I31") = Range("I5").Value

End Sub

Private Sub OptionButton13_Click()
    
    Range("I31") = Range("I6").Value
    
End Sub

Private Sub OptionButton14_Click()
    
    Range("I31") = Range("I7").Value
    
End Sub

Private Sub OptionButton15_Click()
    
    Range("I31") = Range("I8").Value
    
End Sub  '←贈り主名印字スタイル

'慶弔名表書き→
Private Sub OptionButton16_Click()
    
    Range("I33") = Range("C12").Value

End Sub

Private Sub OptionButton17_Click()
    
    Range("I33") = Range("C13").Value

End Sub

Private Sub OptionButton18_Click()
    
    Range("I33") = Range("C14").Value

End Sub

Private Sub OptionButton19_Click()
    
    Range("I33") = Range("C15").Value

End Sub

Private Sub OptionButton20_Click()
    
    Range("I33") = Range("C16").Value

End Sub

Private Sub OptionButton21_Click()
    
    Range("I33") = Range("C17").Value

End Sub

Private Sub OptionButton22_Click()
    
    Range("I33") = Range("C18").Value

End Sub

Private Sub OptionButton23_Click()
    
    Range("I33") = Range("C19").Value

End Sub

Private Sub OptionButton24_Click()
    
    Range("I33") = Range("C20").Value

End Sub

Private Sub OptionButton25_Click()
    
    Range("I33") = Range("C21").Value

End Sub

Private Sub OptionButton26_Click()
    
    Range("I33") = Range("C22").Value

End Sub

Private Sub OptionButton27_Click()
    
    Range("I33") = Range("C23").Value

End Sub

Private Sub OptionButton28_Click()
    
    Range("I33") = Range("C24").Value

End Sub

Private Sub OptionButton29_Click()
    
    Range("I33") = Range("C25").Value

End Sub

Private Sub OptionButton30_Click()
    
    Range("I33") = Range("C26").Value

End Sub

Private Sub OptionButton31_Click()
    
    Range("I33") = Range("C27").Value

End Sub

Private Sub OptionButton32_Click()
    
    Range("I33") = Range("C28").Value

End Sub

Private Sub OptionButton33_Click()
    
    Range("I33") = Range("C29").Value

End Sub

Private Sub OptionButton34_Click()
    
    Range("I33") = Range("C30").Value

End Sub

Private Sub OptionButton35_Click()
    
    Range("I33") = Range("C31").Value

End Sub

Private Sub OptionButton36_Click()
    
    Range("I33") = Range("C32").Value

End Sub

Private Sub OptionButton37_Click()
    
    Range("I33") = Range("C33").Value

End Sub

Private Sub OptionButton38_Click()
    
    Range("I33") = Range("C34").Value

End Sub

Private Sub OptionButton39_Click()
    
    Range("I33") = Range("C35").Value

End Sub

Private Sub OptionButton40_Click()

    Range("I33") = Range("C36").Value

End Sub

Private Sub OptionButton41_Click()

    Range("I33") = Range("C37").Value

End Sub

Private Sub OptionButton42_Click()

    Range("I33") = Range("C38").Value

End Sub

Private Sub OptionButton43_Click()

    Range("I33") = Range("C39").Value

End Sub

Private Sub OptionButton44_Click()

    Range("I33") = Range("C40").Value

End Sub

Private Sub OptionButton45_Click()

    Range("I33") = Range("C41").Value

End Sub

Private Sub OptionButton46_Click()

    Range("I33") = Range("C42").Value

End Sub

Private Sub OptionButton47_Click()

    Range("I33") = Range("C43").Value

End Sub    '←慶弔名表書き

'文字フォント種→
Private Sub OptionButton48_Click()
    
    Range("I35") = Range("F12").Value

End Sub

Private Sub OptionButton49_Click()
    
    Range("I35") = Range("F13").Value

End Sub

Private Sub OptionButton50_Click()
    
    Range("I35") = Range("F14").Value

End Sub

Private Sub OptionButton51_Click()
    
    Range("I35") = Range("F15").Value

End Sub

Private Sub OptionButton52_Click()


    Range("I35") = Range("F16").Value

End Sub

Private Sub OptionButton53_Click()

    Range("I35") = Range("F17").Value

End Sub

Private Sub OptionButton54_Click()

    Range("I35") = Range("F18").Value

End Sub

Private Sub OptionButton55_Click()

    Range("I35") = Range("F19").Value

End Sub    '←文字フォント種

'贈り主の文字の制御→
Private Sub OptionButton56_Click()
    
    Range("I37") = Range("I12").Value

End Sub

Private Sub OptionButton57_Click()
    
    Range("I37") = Range("I13").Value

End Sub    '←贈り主の文字の制御

'文字フォントサイズ→
Private Sub OptionButton58_Click()

    If Range("F24") = "" Then Exit Sub
    Range("I41") = Range("F24").Value

End Sub

Private Sub OptionButton59_Click()

    If Range("F25") = "" Then Exit Sub
    Range("I41") = Range("F25").Value

End Sub

Private Sub OptionButton60_Click()

    If Range("F26") = "" Then Exit Sub
    Range("I41") = Range("F26").Value

End Sub

Private Sub OptionButton61_Click()

    If Range("F30") = "" Then Exit Sub
    Range("I43") = Range("F30").Value

End Sub

Private Sub OptionButton62_Click()

    If Range("F31") = "" Then Exit Sub
    Range("I43") = Range("F31").Value

End Sub

Private Sub OptionButton63_Click()

    If Range("F32") = "" Then Exit Sub
    Range("I43") = Range("F32").Value

End Sub    '←文字フォントサイズ

'送り主名併記→
Private Sub OptionButton64_Click()
    
    Range("I39") = Range("I17").Value

End Sub

Private Sub OptionButton65_Click()
    
    Range("I39") = Range("I18").Value

End Sub

Private Sub OptionButton66_Click()
    
    Range("I39") = Range("I19").Value

End Sub    '←送り主名併記

'設定した項目を確定する
Private Sub 設定確定_Click()

    commandbutton1_Click
    Call Module1.設定決め

End Sub

Private Sub 設定欄リセット_Click()
    Call Module2.設定欄作成
End Sub

Private Sub 熨斗印刷_Click()
    Call Module1.熨斗テンプレベースB
End Sub

Private Sub 熨斗書き保存_Click()
    Call 熨斗シート保存
End Sub

 

詳細設定シートの項目選択の
コントロール設置のまとめ

 

今回設置したオプションボタン、チェックボックス、コマンドボタンは、

マウスクリック操作で起こるイベントからの動作をシートモジュールで記述することになります。

その動作としては、シートのセルへ値を書き込んだり、

標準モジュールに記述されたプロシージャーを呼び出し実行させたり、ということになります。

 

次回は、今回の選択された項目をシート上で反映させていくVBAコードを組み立てます。

 

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

 

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

けれども、

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

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

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

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

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

重要ワード

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

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

です。

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

ハッキリ言って、

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

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

 

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

 

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

 

 

このサイトでよく使うVBAのコードのトピックを纏めています。

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

 

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

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