ユーザーフォームのコンボボックスにすべてのシート名を表示して、ユーザーが入力したデータを転記する方法をご紹介します。
ぜひお試しください😉
ユーザーフォーム作成
ユーザーフォームを作成します。
Excelシート概要
A~Eのシートが5枚存在します。
全シートが同じフォーマットです。
Aシートに「ユーザーフォームを開く」ボタンを設置します。
Excelシートにマクロボタン設置
「A」シートにマクロボタンを設置します。
以下コードを標準モジュール「Module1」に入力して、
ボタンをクリックしたときに、ユーザーフォームが開くようにします。
Sub ボタン1_Click()
UserForm1.Show vbModeless
End Sub
マクロコードを「Module1」に入力した画面
マクロコードを入力
マクロコードを「UserForm1」に入力します。
Option Explicit
Private Sub UserForm_Initialize()
Dim sht As Worksheet
' ワークブック内のすべてのシート名をコンボボックスにロード
For Each sht In ThisWorkbook.Sheets
ComboBox1.AddItem sht.Name
Next sht
End Sub
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim lastRow As Long
' コンボボックスの選択を確認
If ComboBox1.Value = "" Then
MsgBox "シートが選択されていません。", vbExclamation
Exit Sub
End If
' 選択されたシートを取得
Set ws = ThisWorkbook.Sheets(ComboBox1.Value)
' 最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
' テキストボックスの値があれば転記
If TextBox1.Value <> "" Then ws.Cells(lastRow, 1).Value = TextBox1.Value ' 日付
If TextBox2.Value <> "" Then ws.Cells(lastRow, 2).Value = TextBox2.Value ' テキストボックス2
If TextBox3.Value <> "" Then ws.Cells(lastRow, 3).Value = TextBox3.Value ' テキストボックス3
If TextBox4.Value <> "" Then ws.Cells(lastRow, 4).Value = TextBox4.Value ' テキストボックス4
If TextBox5.Value <> "" Then ws.Cells(lastRow, 5).Value = TextBox5.Value ' テキストボックス5
' コンボボックスとテキストボックスをクリア
ComboBox1.Value = ""
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
End Sub
マクロコードを入力する場所「UserForm1」
動作
ユーザーフォーム上の「コンボボックス1」には、
開いているワークブック内の全てのシート名が表示されます。
一覧から一つのシート名を選択します。
「テキストボックス1」から「テキストボックス5」に値を入力します。
ここでは「テキストボックス1」に日付、
「テキストボックス2~5」には文字を入力します。
その後、実行ボタン(CommandButton1)をクリックします。
選択したシートの最終行にデータが転記されます。
データ転記後、コンボボックスとテキストボックスは自動的にクリアされ、
次の入力のためにリセットされます。
この記事がお役に立ちますと幸いです🍀
・【ExcelVBA】ユーザーフォーム作成の事例まとめ
「今すぐ使えるかんたんmini Excel マクロ&VBAの基本と便利がこれ1冊でわかる本」
基礎から応用まで丁寧に解説されており、VBAの初心者も安心して学ぶことができる
実務に直結する便利なワザを豊富に紹介。日々の業務を効率化する技術が満載!