ユーザーインターフェイス(UI)要素を作成し、カスタマイズする為のツールです。Excelワークブック内でダイアログボックスやカスタムフォームを作成するために使用されます。ユーザーフォームを使用するため、ユーザーがデータを入力し、操作するためのカスタムUIを作成できます。
Excel VBAのユーザーフォームに関する主な特徴
- カスタム ダイアログ ボックスの作成: 情報を表示したり、ユーザーからデータを収集したりカスタム ダイアログ ボックスを作成できます。タスクとしても活用ができます。
- ユーザーフォームテキストボックス、ラベル、ボタン、リストボックス、コンボボックスなど、さまざまなコントロールを追加できます。これらを活用して、ユーザーとの対話を可能にします。
- コントロールのカスタマイズ:ユーザーフォーム内のコントロールをカスタマイズし、外観や動作を制御できます。フォント、色、サイズなどを調整して、フォームを見栄えよくすることができます。
- コードとの統合:コントロールに対するイベントハンドラを作成し、ボタンのクリックなどのアクションに対してコードを実行できます。
- データの取得と表示: ユーザーからのデータ入力を収集し、データをExcelワークブック内で表示、処理、保存することができます。
- 使いやすいUIの提供: Excelの標準的なUI要素よりもカスタマイズされた、使いやすい直感的なユーザーインターフェースを提供できます。
ユーザーフォームの作成や編集には、VBAの統合開発環境(VBE)内の「ユーザーフォーム」デザイナーが使用されます。デザイナーを使用してコントロールを構成し、プロパティを設定し、イベントハンドラを追加できます。
特にカスタムアプリケーションやデータ入力フォームを作成する場合に非常に便利です。ユーザーフォームを使用することで、Excelの機能を拡張し、ユーザーとの対話を向上させることができます。
会員Noをリストから検索して出席をとるユーザーフォームの作り方
ユーザーフォームの設定をします。
・テキストボックス
・コンボボックス(登録用とダイアログを閉じる用)
登録用のボタンのコード
テキストボックスに入力した値は登録ボタンを押下すると消えるクリアされます。
Sheet2にリストを作成しておきます。
Sheet1に名前と登録時間が書き出されます。
リストのA列に対象の値がない場合は「会員ナンバーが正しくありません」と表示されます。
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim wsData As Worksheet
Dim lastRow As Long
Dim matchRow As Variant
Dim inputValue As String
Dim memberName As String
' ワークシートの設定
Set ws = ThisWorkbook.Sheets("Sheet1") '入力データを保存するシート
Set wsData = ThisWorkbook.Sheets("Sheet2") '会員ナンバーと名前の表があるシート
' 入力値の取得
inputValue = Me.TextBox1.Value
Me.TextBox1 = ""
' 会員ナンバーの検索
On Error Resume Next
matchRow = Application.Match(inputValue, wsData.Range("A:A"), 0)
On Error GoTo 0
Debug.Print matchRow
If Not IsError(matchRow) Then
' 会員ナンバーが見つかった場合
memberName = wsData.Cells(matchRow, 2).Value
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
ws.Cells(lastRow, 1).Value = memberName
ws.Cells(lastRow, 2).Value = Now
MsgBox memberName & "の名前と時刻が入力されました。"
Else
' 会員ナンバーが見つからない場合
MsgBox "会員ナンバーが正しくありません"
End If
End Sub
閉じる用のボタンのコード
右上の「×」でも、閉じる用の作成したボタンでも閉じることができます。
Private Sub CommandButton2_Click()
Unload Me
End Sub
Excel 上に常にユーザーフォームを表示させるコード
このコードの実行中は他のExcelを操作することができません。
Sub 常に表示()
UserForm2.Show vbModeless
End Sub
リストの作成
A列に会員ナンバーとB列に名前を記載します。
VBAではテキストボックスに入力した値をA列で検索して、B列を書き出します。
登録時間の記載
A列に名前を記載して、B列に登録時間を記載します。
登録ボタンの反応
リストに該当する値がない場合は以下の表示になります。
リストに該当する値がある場合は以下の表示になります。
注意点
リストのA列とテキストボックスに入力する値は文字列での設定になっています。