带底推如果值单元格=组合框-在用户窗体组合框中显示-VBA

时间:2018-10-05 12:25:54

标签: excel vba combobox userform

我想按如下所示完成代码: 如果单元格等于“ ComboBox1”的值,则按下“ CommandButton1”,然后将其显示在“ ComboBox1”中。

我的代码(不完整):

Private Sub UserForm_Initialize()
Dim xRg As Range
Set xRg = Worksheets("LookupLists").Range("A1:B5")
Me.ComboBox1.List = xRg.Columns(1).Value
End Sub

Private Sub CommandButton1_Click()
If Sheets("Sheet1").Range("A1") = "" Then
    Beep
    Else
    If Sheets("Sheet1").Range("A1") = xRg Then
    'What code should I write here to if
    '"Sheets("Sheet1").Range("A1")=Worksheets("LookupLists").Range("A1:B5")" show the amount in comboBox1?
    End If
End If
End Sub

1 个答案:

答案 0 :(得分:1)

如何匹配隐藏在第二栏中的组合框中的值并突出显示找到的项目

并不容易理解您的实际意图。

当您指的是两列数据范围A:B,但在组合框中仅显示第一范围列(可能标识例如名称或ID )时,我假定以下内容: / p>

  
      
  • 点击CommandButton1控件和
  •   
  • 在给定的单元格值A1)等于ComboBox1的第二个 value 列(可能隐藏< / em>),
  •   
  • 应选择(突出显示)相应的ComboBox1项(显示例如姓名)。
  •   

应用的方法

CommandButton1_Click事件过程中的基本代码行是将可能的 match 位置分配给变量pos

pos = Application.Match(myVal, Application.Index(Me.ComboBox1.List, 0, 2), 0)

由于► Application.Match 需要一个一维数组,而ComboBox1.List二维,即{{ 1}}函数必须从组合列表中提取 2nd (隐藏)组合框列(包含值),因此现在获得一个1维数组作为参数。

... Application.Index'c.f.注意*)

  • )注意,必须将上述Application.Index(Me.ComboBox1.List, 0, 2)函数中的行索引设置为Application.Index,以便列索引►0可以将仅第二列。

如果找到了匹配位置,则变量2会收到数字项目编号,该数字可通过重置组合框pos(减去)来选择找到的项目1,因为框索引基于零)。

如果在组合框中没有找到相应的值,则.ListIndex会返回错误,因此有必要通过►{{1}检查此变量来避免错误消息}函数(这就是为什么pos必须声明为 Variant ,而不仅仅是声明为 Long 以避免类型不匹配错误的原因。)

用户表单代码

IsError()