VBAのユーザーフォームは、ユーザーからの入力を取得するために使用され、出力やメッセージを表示するために使用されることもあります。ユーザーフォーム `link:/ applications-word-outlook-in-vba-getting-started-with-excel-vba-userforms [here]`の基本について学びます。

ユーザーフォームには、入力用に複数の異なるコンポーネントを含めることができます。

これらのコンポーネントは、ユーザーフォームのコントロールと呼ばれます。

ユーザーフォームコントロールにはいくつかの種類があり、それぞれが異なるプロパティを持ち、さまざまな理由で使用されます。各タイプのユーザーフォームコントロールをいつどのように使用するかを知っておくと便利です。この記事では、ExcelVBAでユーザーフォームコントロールを使用する方法を学習します。

ユーザーフォームコントロールの種類

VBAにはユーザーフォームコントロールが多すぎます。それらをカバーする場合この記事では、主要なフォームコントロールのみに焦点を当てます。

1:ラベル

2:TextBox

3:ComboBox

4:リストボックス

5:チェックボックス

6:OptionButton

7:ToggleButton

8:コマンドボタン

9:フレーム

これらすべてのコントロールを見てみましょう。

ラベル:

ラベルは、単にテキストラベルを表示するために使用されます。入力エリアのラベル、警告、方向などのように。

image

ユーザーフォームにラベルを追加するには、ToolBoxから[ラベル]オプション(Aアイコン)を選択するだけです。カーソルがプラス記号に変わります。ラベルを配置する領域にドラッグします。

TextBox:

テキストボックスは、ユーザーからの基本的なオープンエンド入力オプションです。ユーザーは、入力したい入力を入力するだけです。基本的なシナリオは名前の入力です。

image

マウスをテキストボックスに合わせたときにメッセージを表示する場合は、プロパティウィンドウのControlTipTextにメッセージを記述します。

image

ComboBox:

コンボボックスは、クリックされたときにアイテムのリストを表示するために使用されます。ユーザーは、そのリストから表示されている項目を簡単に選択するか、自分で入力を入力できます。

ユーザーが選択できるオプションのリストがある場合は、ExcelVBAでComboBoxを使用します。ユーザーはリストから選択するか、手動で回答を入力できます。

image

ツールボックスからコンボボックスを選択し、フォームをドラッグします。フォームにすぐにコンボボックスが挿入されます。 comboxのデフォルト名はCombobox1、2、3などになります。プロパティボックスから変更できます。

image

ComboBoxにアイテムを挿入する方法は?

これで、コンボボックスがフォームに追加されました。ただし、ユーザーフォームを読み込むと、コンボボックスに何も表示されません。これは、コンボボックスにまだアイテムを追加していないためです。

この例では、ユーザーフォームが初期化(ロード)されるときに、コンボボックスにアイテムを追加します。そのため、「初期化」でもユーザーフォームを使用します。

(コンポーネントではなく)ユーザーフォームを右クリックして、ユーザーフォーム全体を選択します。ビューコードを選択します。

image

`link:/ events-in-vba-the-events-in-excel-vba [events]`から

、[初期化]を選択します。

image

次に、ComboBoxクラスのプロパティPASSWORDを使用して、必要な数のアイテムを追加します。

Private Sub UserForm_Initialize()

ComboBox1.AddItem "2016"

ComboBox1.AddItem "2017"

ComboBox1.AddItem "2018"

ComboBox1.AddItem "2019"

ComboBox1.AddItem "2020"

End Sub

UserForm_Initialize()イベントにアイテムを追加しているため、ユーザーフォームが読み込まれると、すべてのアイテムがコンボボックスに追加されます。

image

選択したアイテムをComboBoxから取得する

コンボボックスから選択したアイテムを使用するには、ComboBoxのValueプロパティを使用するだけです。

Private Sub CommandButton1_Click()

MsgBox ComboBox1.Value

End Sub

ここでは、ユーザーがコマンドボタンをクリックしたときに選択した値を示しています(以下のコマンドボタンクリックイベントが表示されます)。

image

リストボックス

ListBoxは、ユーザーが定義済みのリストから選択できるようにする場合に使用されます。

ComboBoxに似ているように聞こえますか?はい、リストボックスはComboBoxと非常によく似ていますが、ユーザーがリストボックスに回答を入力できない点が異なります。

利用可能なオプションからのみ選択する必要があります。

フォームにリストボックスを挿入するには、ツールボックスからリストボックスを選択し、フォーム領域でドラッグします。

リストボックスのデフォルト名は、遺伝的にlistbox1、2、3などになります。

プロパティボックスから変更できます。

image

ComboBoxと同様に、VBAリストボックスは最初は空白です。初期化するには、リストボックスクラスのaddプロパティを使用するだけです。

リストボックスにアイテムを追加する方法は?

フォームの初期化イベントでコンボボックスのリストにアイテムを追加したので、同じイベントにリストボックスのアイテムを追加します。上記の初期化イベントを編集して、ユーザーフォームの読み込み時にアイテムを追加するだけです。

Private Sub UserForm_Initialize()

ComboBox1.AddItem "2016"

ComboBox1.AddItem "2017"

ComboBox1.AddItem "2018"

ComboBox1.AddItem "2019"

ComboBox1.AddItem "2020"

'Adding Item to List

ListBox1.AddItem "Jan"

ListBox1.AddItem "Feb"

ListBox1.AddItem "Mar"

ListBox1.AddItem "Apr"

ListBox1.AddItem "May"

ListBox1.AddItem "Jun"

ListBox1.AddItem "Jul"

ListBox1.AddItem "Aug"

ListBox1.AddItem "Sep"

ListBox1.AddItem "Oct"

ListBox1.AddItem "Nov"

ListBox1.AddItem "Dec"

End Sub

上記のコードは、フォームをロードするとすぐにリストボックスに月の名前を追加します。

image

リストボックスから選択したアイテムを取得しています

ユーザーがリストボックスで選択したアイテムを取得するには、リストボックスオブジェクトのValueプロパティを使用します。

ここでは、ユーザーが選択した月をコンボボックスで指定された入力に追加します。

Private Sub CommandButton1_Click()

MsgBox ComboBox1.Value & "-" & ListBox1.Value

End Sub

image

コマンドボタンを押すと、選択したアイテムがメッセージボックスに表示されます。

image

チェックボックスVBAコントロール

チェックボックスは、TrueまたはFalseに設定できるバイナリコントロールです。

複数のチェックボックスを設定して、一度に複数のチェックボックスを選択できます。これは基本的に、ユーザーが複数のオプションを選択できるようにする必要がある場合に使用されます。多肢選択問題のように。

チェックボックスをユーザーフォームに追加するには、ツールボックスからチェックボックスを選択し、VBAユーザーフォーム領域にドラッグします。

image

チェックボックスをユーザーフォームに追加すると、チェックボックスのデフォルト名はcheckbox1、checkbox2などになります。チェックボックスの名前はプロパティボックスから変更できます。

ユーザーフォームのチェックボックスの使い方は?

チェックボックスを追加するとすぐに、クリック可能になります。ユーザーはそれらをチェックまたはチェック解除できます。しかし、どのチェックボックスが選択され、どれが選択されていないかをどうやって知るのでしょうか?

私が言ったように、チェックボックスはブール値です。したがって、チェックボックスが選択されている場合、その値はTrueです。それ以外の場合、その値はFalseです。

以下のコードは、どのチェックボックスが選択されているかをチェックし、メッセージボックスに表示します。

Private Sub CommandButton1_Click()

Dim msg As String

If CheckBox1.Value = True Then

msg = msg & "CheckBox1 is selected"

End If

If CheckBox2.Value = True Then

msg = msg & vbCrLf & "CheckBox2 is selected"

End If

MsgBox msg

End Sub

image

ユーザーがユーザーフォームでオプションを1つだけ選択できるようにする場合は、ラジオボタンを使用します。

OptionButtonVBAコントロール

ラジオ/オプションボタンは、ユーザーが使用可能なオプションから1つのオプションのみを選択するようにする場合に、VBAユーザーフォームで使用されます。フォームが性別、好みの言語、年齢層などを尋ねるときのように。

ラジオボタンは、ツールから選択してフォーム領域をドラッグすることで、ユーザーフォームに簡単に追加できます。複数のラジオボタンの場合は、ラジオボタンを複数回ドラッグアンドドロップします。

image

ラジオ/オプションボタンの選択を取得する方法は?

ラジオボタンはバイナリです。それらの値は、TrueまたはFalseのいずれかになります。

選択したラジオボタンはTrueに設定され、他のすべてのボタンはfalseに変わります。グループでは、一度に1つのラジオボタンのみが有効になります。

以下のコードは、どのラジオボタンが選択されているかを確認し、それに応じてメッセージを表示するだけです。

Private Sub CommandButton1_Click()

Dim gender As String

If OptionButton1.Value = True Then

gender = "Male"

ElseIf OptionButton2.Value = True Then

gender = "female"

Else

gender = "other"

End If

MsgBox gender

End Sub

image

上記の例では、ユーザーフォームで選択できるオプションボタンは1つだけであることに注意してください。しかし、オプションボタンの複数のグループが必要な場合はどうでしょうか。その場合、フレームを使用します。そしてそれは私たちを…

にもたらします=== VBAユーザーフォームのフレーム

フレームは、チェックボックスやオプションボタンなどのユーザーフォームオブジェクトにグループ化するために使用されます。

フレームを使用するには、最初にそのフレームをフォーム領域にドラッグアンドドロップしてから、そのフレーム内の他のオブジェクトをドロップします。

image

プロパティボックスのキャプションからフレームの名前を変更できます。

image

すべてのイベントは、他のユーザーフォームオブジェクトと同様にフレームでも使用できます。ただし、オブジェクトをグループ化するためにそれらを使用することが望ましいです。 framでonclickイベントを設定して、クリックされたときにその中のオブジェクトの基本情報をロードできます。

VBAユーザーフォームのボタンを切り替えます

トグルボタンも、オンとオフに設定できるバイナリオブジェクトです。トグルボタンを使用して、何かのオンとオフを切り替えることができます。

トグルボタンをユーザーフォームに追加するには、ツールからトグルボタンを選択し、フォーム領域にドラッグします。

image

以下のコードは、トグルボタンのonclickイベントに設定されています。トグルボタンを押すとセルA1の色が青に変わり、トグルボタンを押すとリセットされます。

Private Sub ToggleButton1_Click()

If ToggleButton1.Value Then

Range("A1").Interior.ColorIndex = 32

Else

Range("A1").Interior.ColorIndex = xlColorIndexNone

End If

End Sub

VBAユーザーフォームのコマンドボタン

これらは、検証、計算、フォーム送信などのメインVBAコードを実行するために使用するボタンです。

上記の例では、コマンドボタンを使用してフォームを送信しました。ユーザーフォームには、必要な数のコマンドボタンを配置できます。

image

ボタンがクリックされたときにコードを実行するには、ボタンをダブルクリックするだけです。 CommandButton_Clickイベントを開きます。コマンドボタンをクリックして実行するコードをここに記述します。

image

以下のコードは、完了コマンドボタンをクリックすると実行され、ユーザーフォームも閉じます。

Private Sub CommandButton1_Click()

Dim gender As String

If OptionButton1.Value = True Then

gender = "Male"

ElseIf OptionButton2.Value = True Then

gender = "female"

Else

gender = "other"

End If

MsgBox gender

Unload UserForm1 'closes userform

End Sub

そうですね、これらはVBAの基本的なユーザーフォームコントロールです。お役に立てば幸いです。ユーザーフォームコントロールとユーザーフォームイベントについて疑問がある場合は、以下のコメントセクションに記入してください。

関連記事

link:/ applications-word-outlook-in-vba-getting-started-with-excel-vba-userforms [ExcelVBAユーザーフォーム入門] | Excelユーザーフォームは、ユーザーから情報を取得するのに役立ちます。 VBAユーザーフォームから始める方法は次のとおりです。`link:/ user-forms-input-boxes-in-vba-change-the-valuecontent-of-several-userform-controls-using-vba-in-microsoft-excel [Change ExcelでVBAを使用するいくつかのユーザーフォームコントロールの値/コンテンツ] `|ユーザーフォームコントロールのコンテンツを変更するには、この単純なVBAスニペットを使用します。

`link:/ user-forms-input-boxes-in-vba-prevent-a-userform-from-closeing-when-the-user-clicks-the-x-button-using-vba-in-microsoft-excel [ ExcelでVBAを使用して、ユーザーがxボタンをクリックしたときにユーザーフォームが閉じないようにします] `|ユーザーがフォームのxボタンをクリックしたときにユーザーフォームが閉じないようにするために、UserForm_QueryCloseイベントを使用します。

人気の記事:

link:/ keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [生産性を高めるための50のExcelショートカット] |あなたの仕事をより速くしてください。これらの50のショートカットにより、Excelでの作業がさらに高速になります。

link:/ forms-and-functions-introduction-of-vlookup-function [ExcelのVLOOKUP関数] |これは、さまざまな範囲やシートから値を検索するために使用される、Excelの最も使用され人気のある関数の1つです。 link:/ Tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] |この驚くべき関数を使用して、条件付きの値をカウントします。特定の値をカウントするためにデータをフィルタリングする必要はありません。

ダッシュボードを準備するには、Countif関数が不可欠です。

link:/ excel-formula-and-function-excel-sumif-function [ExcelでSUMIF関数を使用する方法] |これは、ダッシュボードのもう1つの重要な機能です。これは、特定の条件で値を合計するのに役立ちます。