0

我有编程经验,但是,我是 VBA 新手。我有一个正在处理的用户表单。此表单有一个组合框,其中有一个初始化列表。我想做的是:

*从 ComboBox 中获取用户输入的 ID Number 值 *获取用户输入的值并使用工作表中的一系列值找到其匹配项(即 Worksheet.Range("ID_Number_List")) *一旦获得匹配项获取它匹配的单元格的位置 * Off 将单元格的位置设置一列以获取与 ID 号(相同行)相关的名称以将其设置为 textBoxName.Value *Off 将其设置为两列以获取与 ID 号相关的电话号码并将其设置为 textboxTele.value

我希望在从组合框中选择一个值后立即发生这种情况,所以我的问题是我的代码是进入组合框中还是进入下一个文本框?因此,只要该人切换到下一个文本框,代码就会自动执行。我希望代码能够完全执行,而不需要转到下一个框。

这段代码不完整,但这是我所拥有的(我没有添加偏移部分,我只是做了一个测试执行):

Dim ORIValue As String 
'get value from combo_box Set 
ORIValue = COMBO_ORILIST.Value

Dim cLoc As Range 
Dim cORIVal As Range

'worksheet with the ID information Dim ORISheetList As Worksheet 
Set ORISheetList = Worksheets("ORI_LIST")

'
For Each cLoc In ORISheetList.Range("ORI_LIST")
'compare the input string from list- considering using Match function for this
If StrComp(cLoc, ORIValue,  vbTextCompare) Then TextBAgencyName.Value = "test"
Else: Next cLoc
End If

让我知道你的想法。如果我必须重写一切,我会的。

4

1 回答 1

1

您的代码无法编译。

如果您有一个带有单个组合框的用户窗体,称为 ComboBox1,则需要将单元格查找代码放入表单代码中,如下所示:

Private Sub ComboBox1_Change()
    MsgBox "yep, this is where the code should go"
End Sub

我怀疑将组合框的 rowsource 属性与所选值的索引结合使用,您可能不需要实际执行对所选值的搜索。像这样的东西可能会起作用:

Private Sub ComboBox1_Change()
    MsgBox Range(ComboBox1.RowSource).Cells(ComboBox1.ListIndex + 1)
End Sub

希望有帮助。

于 2012-07-05T05:15:29.527 回答