Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于组合框值填充文本框_Excel_Vba_Combobox_Userform - Fatal编程技术网

Excel 基于组合框值填充文本框

Excel 基于组合框值填充文本框,excel,vba,combobox,userform,Excel,Vba,Combobox,Userform,我正在尝试根据我在组合框上所做的选择填充文本框。它基本上会查找组合框的值,并从我选择的列(第三列)返回指定的值。我已经完成了一些代码,但它返回了一个类型不匹配错误 Private Sub UserForm_Initialize() ComboBox1.List = Sheets(1).Range("C15:C39").Value End Sub Private Sub ComboBox1_Change() TextBox1.Text = Application.VLookup(ComboBox

我正在尝试根据我在组合框上所做的选择填充文本框。它基本上会查找组合框的值,并从我选择的列(第三列)返回指定的值。我已经完成了一些代码,但它返回了一个类型不匹配错误

Private Sub UserForm_Initialize()
ComboBox1.List = Sheets(1).Range("C15:C39").Value
End Sub

Private Sub ComboBox1_Change()
TextBox1.Text = Application.VLookup(ComboBox1.Value, Worksheets("sheet1").Range("A15:K39"), 3, False)
End Sub

有谁能告诉我出了什么问题,以及是否有更好的方法来解决这个问题吗?

假设您的组合不是多选组合,然后将其加载到您的所有范围,并显示您感兴趣的列。使组合框中的列数与范围中的列数相同

ComboBox1.List = Sheets(1).Range("A15:K39").Value
ComboBox1.ColumnCount=11
ComboBox.ColumnWidths="0,0,100,0,0,0,0,0,0,0,0"
TextBox1.Value=ComboBox1.List(ComboBox.ListIndex,2) 'the columns are zero-based
试试这个:

TextBox1.Text = Application.WorksheetFunction.VLookup(ComboBox1.List(ComboBox1.ListIndex, 0), Range("C15:K39"), 1, False)
谢谢各位, 我最终选择了这个

Private Sub ComboBox1_Change()
Dim myRange As Range, f As Range

    Set myRange = Worksheets("Sheet2").Range("A2:B26")

    Set f = myRange.Find(What:=ComboBox1.Value, LookIn:=xlValues, Lookat:=xlWhole, MatchCase:=False) '<--| try and find combobox selected value
    If f Is Nothing Then
        TextBox1.Value = ""
    Else '<--| ... otherwise...
        TextBox1.Value = f.Offset(, 1)
        TextBox2.Value = f.Offset(, 2)
        TextBox3.Value = f.Offset(, 3)
    End If
End Sub

正在查找的值应位于查找表的第一列中。另外,
表(1)
工作表(“表1”)
是同一张表吗?
Private Sub OK_Click()
    Sheets("Sheet1").Range("C9") = TextBox4.value
    Sheets("Sheet1").Range("D9") = TextBox5.value
End Sub