Excel VBAでユーザーフォームを作成していると、複数のTextBoxに入力された値をまとめて1つのセルへ保存したい場面があります。例えばA~Dの入力欄に数字を入力し、入力された項目名と数字だけを結合して表示する処理です。この記事では、空白や0の入力を無視しながら、必要なデータだけを1つのセルへ表示する方法を解説します。
複数のTextBoxの内容を1つのセルへまとめる基本的な考え方
ユーザーフォームのTextBoxから取得した値は、文字列として扱うことができます。そのため、入力された値が存在する場合だけ文字列を追加していく方法がシンプルです。
例えば、A・B・C・Dという4つのTextBoxがあり、それぞれの値を「A2」「D7」のような形式で保存したい場合、以下の流れで処理します。
- TextBoxに数字が入力されているか確認する
- 数字が0ではないか確認する
- 条件を満たした場合だけ項目名と数字を追加する
- 最後にセルへ書き込む
このように条件を分けることで、未入力の項目や不要な0を表示しない処理ができます。
TextBoxの値を結合してセルへ入力するVBAコード例
以下は、A~DのTextBoxの入力値を確認して、条件を満たしたものだけセルへ表示するサンプルコードです。
Private Sub CommandButton1_Click()
Dim result As String
result = ""
If Val(TextBoxA.Value) <> 0 Then
result = result & "A" & TextBoxA.Value
End If
If Val(TextBoxB.Value) <> 0 Then
If result <> "" Then result = result & ","
result = result & "B" & TextBoxB.Value
End If
If Val(TextBoxC.Value) <> 0 Then
If result <> "" Then result = result & ","
result = result & "C" & TextBoxC.Value
End If
If Val(TextBoxD.Value) <> 0 Then
If result <> "" Then result = result & ","
result = result & "D" & TextBoxD.Value
End If
Range("A1").Value = result
End Sub
このコードでは、例えばAに2、Dに7を入力した場合、セルには「A2,D7」と表示されます。
また、BやCが空白の場合や0が入力された場合は追加されません。そのため「A2,,C0,D7」のような不要な表示を防ぐことができます。
0や空白を除外する処理のポイント
VBAではTextBoxが空の場合でも文字列として取得されます。そのため、単純に「TextBox.Value > 0」のような比較をするとエラーになる場合があります。
そこでVal関数を使って数値として扱うことで、空白の場合は0として判断できます。
例えば以下の場合です。
If Val(TextBoxA.Value) <> 0 Then
この条件では、TextBoxAが空白または0の場合は処理を実行せず、1以上の数字が入力された場合だけ処理します。
入力ミスを防ぎたい場合は、さらにIsNumeric関数を使って数字以外の入力をチェックすると、より安全なフォームになります。
項目数が増える場合は配列を使う方法も便利
TextBoxが4個程度なら個別に処理しても問題ありませんが、項目が10個、20個と増える場合は同じコードを何度も書くことになります。
その場合は、配列を使って処理をまとめる方法がおすすめです。
例えば項目名を配列に入れて、TextBoxの値を順番に確認することで、少ないコードで大量の入力欄に対応できます。
フォームの規模が大きくなる場合は、後から修正しやすいように共通処理として関数化しておくと管理しやすくなります。
入力チェックを追加して使いやすいフォームにする
実際の業務で使用する場合は、数字以外が入力された場合の処理も追加すると安心です。
例えば「ABC」と入力された場合にエラー表示を出す場合は、以下のようなチェックを追加できます。
If Not IsNumeric(TextBoxA.Value) Then
MsgBox "数字を入力してください"
Exit Sub
End If
このような入力チェックを入れることで、保存されるデータの形式を一定に保つことができます。
特に複数人が利用するExcelファイルでは、入力ミスによる集計エラーを防ぐためにも、ユーザーフォーム側で制御しておくことが重要です。
まとめ|VBAでは条件付きで文字列を追加すると複数入力を簡単に結合できる
複数のTextBoxの内容を1つのセルへ表示する場合は、入力された値が0ではない場合だけ文字列を追加する方法が分かりやすくおすすめです。
A~Dのような項目名を付けながら結合する場合でも、条件分岐を使えば「A2,D7」のような見やすい形式で保存できます。
入力項目が増える場合は配列や関数化を利用すると、より管理しやすいVBAコードになります。まずは基本的な結合処理を作り、必要に応じて入力チェックや拡張処理を追加するとよいでしょう。


コメント