我想按如下所示完成代码: 如果单元格等于“ 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
答案 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()