【问题标题】:Populate textboxes based on Combobox value根据 Combobox 值填充文本框
【发布时间】:2019-11-06 19:13:58
【问题描述】:

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

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

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

【问题讨论】:

  • 被查找的值应该在查找表的第一列。还有 - Sheets(1)Worksheets("sheet1") 是同一张纸吗?

标签: excel vba combobox userform


【解决方案1】:

假设您的组合不是多选,然后使用您的所有范围加载它并仅显示您感兴趣的列。使 ComboBox 中的列数与您范围内的列数相同。

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

【讨论】:

    【解决方案2】:

    试试这个:

    TextBox1.Text = Application.WorksheetFunction.VLookup(ComboBox1.List(ComboBox1.ListIndex, 0), Range("C15:K39"), 1, False)
    

    【讨论】:

      【解决方案3】:

      谢谢你们, 我最终选择了这个

      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
      

      一旦从 Combobox 中选择了一个选项,我就有 3 个文本框,其中填充了三个不同的列。

      我想要做的是最后两个文本框,我最终会在其中写入数字,并且会自动更新相应的单元格。

      我面临的问题是更新与组合框中输入的值相关的单元格。 下面的代码非常简陋,我想知道我是否应该手动执行相同的操作。代码的第一部分填充三个第一个文本框,第二部分应该使用我输入的值填充相应的单元格,具体取决于组合框的选择。如果我不够清楚,请告诉我。

      Private Sub OK_Click()
          Sheets("Sheet1").Range("C9") = TextBox4.value
          Sheets("Sheet1").Range("D9") = TextBox5.value
      End Sub
      

      【讨论】:

        猜你喜欢
        • 2012-07-09
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 2021-08-20
        • 2021-12-04
        • 1970-01-01
        • 2013-09-23
        • 1970-01-01
        相关资源
        最近更新 更多