在Excel中从Combobox的文本框中返回值

我只是寻找最简单的方法来返回三个文本框中的值,基于用户窗体中的combobox中的select。

我有一个名为“TPIDLookup”的工作表,它包含4列; TPID,分厂,公司号和MQ名称。 我已经设置了所有四列的范围,现在我只需要在从Combobox中select一个TPID时显示Branch Plant,Company和MQ Name中的值。 但是,在Excel中这样做的时候,我迷失了方向,尽pipe我很熟悉如何在Access中完成它。

如果有帮助,这里是我用来生成combobox列表的代码:

Set WS = Worksheets("TPIDLookup") For Each TPID In WS.Range("TPID") With Me.cmbTPID .AddItem TPID.Value End With Next TPID 

我在网上的研究使我更加困惑,而且我确信有一个死的直接的方法来做到这一点。 我不是程序员,我是VBA的新手,但任何帮助将不胜感激,因为这是我完成表单的最后一步。

非常感谢,

约翰。

为您的cmbTPIDcombobox创build一个combobox更改事件并使用此代码。 用您的实际名称replace文本框名称和命名范围名称:

 Private Sub cmbTPID_Change() Dim ws As Worksheet Dim rFound As Range If Me.cmbTPID.ListIndex = -1 Then 'Nothing selected, or user manually typed an invalid entry 'Clear textboxes Me.txtBranch.Value = vbNullString Me.txtCompanyNo.Value = vbNullString Me.txtMQName.Value = vbNullString Else 'Valid TPID selected 'Find it and populate the textboxes Set ws = ActiveWorkbook.Sheets("TPIDLookup") Set rFound = ws.Range("TPID").Find(Me.cmbTPID.Text, , xlValues, xlWhole) If Not rFound Is Nothing Then Me.txtBranch.Value = Intersect(ws.Range("Branch"), rFound.EntireRow).Value Me.txtCompanyNo.Value = Intersect(ws.Range("CompanyNo"), rFound.EntireRow).Value Me.txtMQName.Value = Intersect(ws.Range("MQName"), rFound.EntireRow).Value End If End If End Sub 

你可以试试这个

这里是你的“主要”子代码摘录与你的问题相关

 Option Explicit Public TPIDRng As Range, branchRng As Range, companyRng As Range, MQRng As Range Sub main() Set TPIDRng = GetColumnUsedRange(Worksheets("TPIDLookup"), "A") Set branchRng = GetColumnUsedRange(Worksheets("TPIDLookup"), "B") Set companyRng = GetColumnUsedRange(Worksheets("TPIDLookup"), "C") Set MQRng = GetColumnUsedRange(Worksheets("TPIDLookup"), "D") With UserForm1 ' change it to whatever name your actual UserForm has .ComboBox1.List = Application.Transpose(TPIDRng) .Show End With Unload UserForm1 End Sub Function GetColumnUsedRange(sht As Worksheet, col As String) With sht Set GetColumnUsedRange = .Range(.Cells(1, col), .Cells(.Rows.Count, col).End(xlUp)) End With End Function 

这里是UserForm代码窗格中的相应代码

 Private Sub ComboBox1_Change() With Me If .ComboBox1.ListIndex = -1 Then .TextBoxBranch.Text = "" .TextBoxCompany.Text = "" .TextBoxMQ.Text = "" Else .TextBoxBranch.Text = branchRng.Cells(.ComboBox1.ListIndex + 1, 1).Value .TextBoxCompany.Text = companyRng.Cells(.ComboBox1.ListIndex + 1, 1).Value .TextBoxMQ.Text = MQRng.Cells(.ComboBox1.ListIndex + 1, 1).Value End If End With End Sub Private Sub CommandButton1_Click() Me.Hide End Sub 

根据您的需要更改名称(范围,Userform,TextBoxes和Combobox)

Interesting Posts