エクセルVBAユーザーフォーム入門
この記事では、VBAユーザーフォームの基本を学びます。 Excelでフォームを作成する方法、VBAツールボックスを使用する方法、ユーザー入力を処理する方法、そして最後にユーザー入力を保存する方法について説明します。 1つの例とステップバイステップガイドを使用して、これらのトピックについて説明します。これを読んでいるなら、ExcelVBAの基本を知っていると思います。
さらに遅れることなく、始めましょう。
Excelとストアレコードに投資するためのフォームを作成する
まず、ユーザーフォームのデザインから始めます。このユーザーフォームには、名前用のテキストボックス、年齢用のテキストボックス、投資額用のテキストボックス、性別用のラジオボタンのペアがあります。始めましょう。
ユーザーフォームをデザインする
ALT + F11ショートカットを使用して、ExcelでVisual BasicEditorを開きます。プロジェクトボックスで、VBAProject(yourfile)を右クリックします。挿入オプションで、ユーザーフォームを選択します。すぐに、新しいフォルダが作成され、ユーザーフォームが見つかります。このプロジェクトのすべてのユーザーフォームは、このフォルダーに追加されます。
プロパティボックス*でフォームの名前をInvestmentFormに変更します。
フォームに要素を追加する:上の画像では、すでに要素(ラベル、テキストボックス、コマンドボタン)を追加しています。ただし、新しいユーザーフォームは完全に空白です。フォームに要素を追加するには、ツールボックスを使用する必要があります。ツールボックスが表示されない場合は、[表示*]タブから取得してください。
名前要素*:テキストボックス、ラベル、ボタンなどはすべて要素です。
また、VBAコードでそれらを使用するには、名前を付ける必要があります。プロパティウィンドウを使用して名前を変更します。要素を選択します。ここでは、名前のテキストボックスを選択しています。プロパティウィンドウに移動し、名前を「NameBox *」に変更します。使用する要素ごとに同じことを行います。 (クリック可能にする場合を除いて、ラベルに名前を付ける必要はありません。)
以下の表のように要素の名前を変更しました。これらの名前を使用して参照します。異なる名前を付けることができます。これらの名前を自分の名前に置き換えるだけです。これらは、コードで使用されるVBA名(コード名)です。それらはフォームに反映されません。
ラベルやボタンに表示されるテキストは「キャプション」です。必要に応じて、要素の名前とキャプションを同じにすることができます。
Element |
Rename |
Name Text Box |
NameBox |
Age Text Box |
AgeBox |
Male Option Button |
MaleOption |
Female Option Button |
FemaleOption |
Investment Text Box |
InvestBox |
Submit Command Button |
SubmitButton |
Cancel Command Button |
CancelButton |
ユーザーフォームをユーザーに表示する:フォームの準備ができたので、ユーザーに表示しましょう。しかし、待ってください、どうすればいいですか。ワークシートには、ユーザーフォームを呼び出すオプションはありません。実際には、ユーザーフォームにはトリガーが必要です。単独では表示できません。コマンドボタン、サブルーチン、またはイベントを使用して、フォームを画面にポップアップ表示できます。
ここでは、コマンドボタンを使用してユーザーフォームをトリガーします。
-
ワークシートで、[開発者]タブに移動しますか?インサート?ボタン(フォームコントロール)。
オープンフォームに名前を変更します。
-
それを右クリックします。 [マクロの割り当て]をクリックしてから、[新規]をクリックします。
サブはすぐに作成されます。次に、この行をそのサブに追加します。
Sub Open_Form() 'Opening form InvestmentForm.Show End Sub
されております。そのシートに戻り、ボタンをクリックします。ユーザーフォームがポップアップ表示されます。
VBAユーザーフォームを使用してシートに記入する:コマンドボタン(フォームを開く)をクリックすると、フォームがポップアップします。これで、フォームに入力できます。しかし、送信ボタンをクリックすると、このシートにデータが入力されているはずですが、何も起こりません。そのためのvba命令を作成していないためです。ユーザーフォームのデータをシートに保存する必要があります。 VBAに戻り、[送信]ボタンをダブルクリックします。新しいサブが自動的に作成されます。このサブはフォームに埋め込まれており、どのモジュールにもありません。これは、フォームの各要素で同じです。
-
このvbaコードをそのサブに記述します。
Private Sub SubmitButton_Click() Sheet1.Activate 'get first empty row on sheet (read about it here) lstrow = Cells(Rows.Count, 1).End(xlUp).Row Set firstEmptyRow = Range("A" & lstrow + 1) 'initialize each cell with data firstEmptyRow.Offset(0, 0).Value = nameBox.Value 'first cell firstEmptyRow.Offset(0, 1).Value = AgeBox.Value 'first cell to the right firstEmptyRow.Offset(0, 3).Value = InvestBox.Value 'third cell to the right 'checking radio button If MaleOption.Value = True Then firstEmptyRow.Offset(0, 2).Value = "Male" 'second cell to the right Else firstEmptyRow.Offset(0, 2).Value = "Female" 'second cell to the right End If 'Closing form Unload Me End Sub
上記のVBAコードのスニペットは、送信ボタンがクリックされたときに実行されます。シートの最初の空の行を見つけて、フォームで提供された値で埋めます。そして最後に、コマンド「UnloadMe」を使用してフォームを閉じます。
[キャンセル]コマンドを使用してフォームを閉じます。今のところ、キャンセルボタンは役に立ちません。何もしていません。入力を中止したい場合は、キャンセルボタンを使用できます。その場合:* VBAエディターのキャンセルコマンドボタンをダブルクリックします。新しいサブが作成されます。このコード行を記述して、ユーザーフォームを閉じます。
Private Sub CancelButton_Click() 'Closing form Unload Me End Sub
最後に、フォームコードは次のようになります。
以上です。これは、Excelvbaユーザーフォームを使用してユーザーから入力を取得する方法です。この記事では、ユーザーフォームの基本的な使用法について説明したので、ユーザーフォームに慣れてください。基本的なvbaの知識があれば、簡単です。
今後の記事では、Excelのvbaユーザーフォームのより高度な機能について説明します。さらに多くのことを行うために、Excelでユーザーフォームを作成します。
vbaユーザーフォームで使用できるさまざまなツールと要素について説明します。
それからこれを練習するまで。必要に応じて、このファイルを参照用にダウンロードできます。
そうそう、これは小さくてシンプルなユーザーフォームのチュートリアルでした。機知に富んだことを願っています。これに関して疑問がある場合は、下のコメントセクションでお知らせください。
関連記事
`link:/ user-forms-input-boxes-in-vba-change-the-valuecontent-of-several-userform-controls-using-vba-in-microsoft-excel [いくつかのUserForm-controlsの値/コンテンツを変更しますExcelで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ボタンをクリックしたときにユーザーフォームが閉じないようにします] `
`link:/ user-forms-input-boxes-in-vba-return-a-userdefined-cell-reference-from-a-dialog-using-vba-in-microsoft-excel [RefEditを使用して、ユーザーが参照するセルを返しますExcelでのユーザーフォームの制御] `
人気の記事:
link:/ forms-and-functions-introduction-of-vlookup-function [ExcelのVLOOKUP関数]
link:/ Tips-countif-in-microsoft-excel [COUNTIF in Excel 2016]
link:/ excel-formula-and-function-excel-sumif-function [ExcelでSUMIF関数を使用する方法]