コンボボックスで入力された文字列をリストに登録する
ComboBoxへ入力した新しい候補を、追加ボタンでリストへ登録します。空欄と重複は追加しません。
実行前に確認
- 追加した候補はフォーム内だけに保存されます。Unload後も残したい場合は、別途シートなどへの保存方法が必要です。
- コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。
1サンプルコード
'【貼付先:UserForm1 のコードモジュール】
Option Explicit
Private Sub UserForm_Initialize()
With Me.ComboBox1
.Style = fmStyleDropDownCombo
.MatchRequired = False
.AddItem "オンライン"
End With
Me.CommandButton1.Caption = "候補に追加"
End Sub
Private Sub CommandButton1_Click()
Dim candidate As String, i As Long
candidate = Trim$(CStr(Me.ComboBox1.Value))
If Len(candidate) = 0 Then
MsgBox "候補を入力してください。"
Exit Sub
End If
For i = 0 To Me.ComboBox1.ListCount - 1
If StrComp(CStr(Me.ComboBox1.List(i, 0)), candidate, vbTextCompare) = 0 Then
Me.ComboBox1.ListIndex = i
MsgBox "すでに登録されています。"
Exit Sub
End If
Next i
Me.ComboBox1.AddItem candidate
Me.ComboBox1.ListIndex = Me.ComboBox1.ListCount - 1
End Sub図で見る自由入力を候補化する
イメージ図ComboBoxへ入力した新しい候補を、追加ボタンでリストへ登録します。空欄と重複は追加しません。
入力
新しい場所名を入力
検証
空欄と重複を確認
追加
AddItem後に新行を選択
各操作は、このガイドに指定されたフォームのコードで行います。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。
- 2
ツールボックスからComboBox1とCommandButton1を各1個を置き、各コントロールの[(Name)]が記載どおりか確認します。
- 3
UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。
- 4
VBEでUserForm1を選び、F5でフォームを表示します。 「会議室」と入力して「候補に追加」を押し、矢印を開きます。同じ内容でもう一度押します。
- 5
「会議室」が候補一覧に1回だけ追加され、2回目は重複のメッセージが出ます。