ユーザーフォーム コンボボックスとテキストボックス連動VBA

ユーザーフォーム コンボボックスとテキストボックス連動VBA-アイキャッチ ExcelVBA

ユーザーフォームで、コンボボックスの選択肢に応じて テキストボックスの表示を動的に変更する方法をご紹介します。

ぜひお試しください😉

ユーザーフォーム作成

ユーザーフォームを作成します。


 

Excelシート概要

ユーザーフォームで「店舗」を選択すると、
その店舗の商品名と価格を表示します。


 

 
 

Excelシートにマクロボタン設置

「Sheet1」にマクロボタンを設置します。


 

以下コードを標準モジュール「Module1」に入力して、
ボタンをクリックしたときに、ユーザーフォームが開くようにします。


Sub ボタン1_Click()
    UserForm1.Show vbModeless
End Sub

 

マクロコードを「Module1」に入力した画面


 
 

マクロコードを入力

マクロコードを「UserForm1」に入力します。


Option Explicit
    Dim kakaku As Long
    Dim i As Long
    Dim tempo As Long
    
Private Sub ComboBox1_Change()
     
    'ComboBox1で選択された店舗の名前が、シートの1行目でどの位置にあるかを探す
    tempo = Application.WorksheetFunction.Match(Me.ComboBox1.Value, Range("1:1"), 0)
    
    'ComboBox2の内容をクリアし、新たに商品名と価格を表示する準備をする
    kakaku = 0
    Me.ComboBox2.Clear
    
    '選択された店舗の列(tempo)に沿って、商品名と価格をComboBox2に追加
    For i = 2 To Cells(Rows.Count, tempo).End(xlUp).Row
        Me.ComboBox2.AddItem ""
        Me.ComboBox2.List(kakaku, 0) = Cells(i, tempo).Value
        Me.ComboBox2.List(kakaku, 1) = Cells(i, tempo + 1).Value
        kakaku = kakaku + 1
    Next i
    
    '商品価格を表示するTextBox1をクリアする
    Me.TextBox1.Value = ""
End Sub

Private Sub ComboBox2_Change()
    'ComboBox2で選択された商品に対応する価格をTextBox1に表示する
    With Me.ComboBox2
        If .ListIndex >= 0 Then
            Me.TextBox1.Value = .List(.ListIndex, 1)
        End If
    End With
End Sub

Private Sub CommandButton1_Click()
    '「登録」ボタンがクリックされた時の処理を記述する場所
End Sub

Private Sub CommandButton2_Click()
    '「キャンセル」ボタンがクリックされた時の処理を記述する場所
End Sub

Private Sub UserForm_Initialize()
' UserFormが初期化された時に一度だけ実行される処理

    'ComboBox1にシートのA列から店舗名を読み込む
    Me.ComboBox1.Clear
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        Me.ComboBox1.AddItem Cells(i, 1).Value
    Next i
    
    'ComboBox2を初期化し、1列目のみ表示するように設定する
    '(ここでは価格は隠される)
    With Me.ComboBox2
        .ColumnCount = 1
    End With
End Sub

 

マクロコードを入力する場所「UserForm1」


 

動作

ComboBox1 で 「店舗」を選択すると、
ComboBox2 に 「商品名」が表示されます。


 

ComboBox2 で 「商品名」を選択すると、
TextBox1 に 「金額」が自動表示されます。


 
 
この記事がお役に立ちますと幸いです🍀
 
・【ExcelVBA】ユーザーフォーム作成の事例まとめ
 

【VBAユーザーフォーム】何ができるの?:使用例34選
...

 

「今すぐ使えるかんたんmini Excel マクロ&VBAの基本と便利がこれ1冊でわかる本」
基礎から応用まで丁寧に解説されており、VBAの初心者も安心して学ぶことができる
実務に直結する便利なワザを豊富に紹介。日々の業務を効率化する技術が満載!