我希望在VBA中的.Match函数中使用所选Listbox项的字符串值 - 我需要值' 1'要输入到选择值与特定列中的#34; A:A"列中的值匹配的行。
我认为我能够做的是为所选的ListBox项使用.value参数,但这似乎要么出错,要么给我一个布尔响应,这不是我所追求的(我在项目的实际字符串值之后。)
我已经循环遍历所有项目以将Selected参数设置为True,然后我逐个遍历列表以添加' 1'到正确的范围。
以下是我认为可以使用的代码(但是没有,它会引发错误"运行时错误' 13':类型不匹配"这可能是到.Value不是一个字符串。
For x = 0 To Me.CreditsEmployeesListBox.ListCount - 1
Me.CreditsEmployeesListBox.Selected(x) = True
Next
For i = 0 To Me.CreditsEmployeesListBox.ListCount - 1
If Me.CreditsEmployeesListBox.Selected(i) = True Then
employeeRow = WorksheetFunction.Match(Me.CreditsEmployeesListBox(i).Value, IndexSheet.Range("A:A"), 0)
IndexSheet.Range(Cells(employeeRow, showCodeColumn).Address).Value = 1
End If
Next
在' employeeRow = ...'线。在这里,我基本上试图问:
employeeRow = WorksheetFunction.Match(<value of the currently referenced ListBox item>,IndexSheet.Range("A:A"),0)
VBA是否可以实现这一点,或者我是以错误的方式解决这个问题?
由于 马特
答案 0 :(得分:0)
作为&#34;混合物&#34;回答(因为有多个问题)试试这个:
For x = 0 To Me.CreditsEmployeesListBox.ListCount - 1
Me.CreditsEmployeesListBox.Selected(x) = True
Next
Dim employeeRow As Variant
For i = 0 To Me.CreditsEmployeesListBox.ListCount - 1
If Me.CreditsEmployeesListBox.Selected(i) = True Then
employeeRow = Application.Match(Me.CreditsEmployeesListBox.List(i), IndexSheet.Columns(1), 0)
If IsNumeric(employeeRow) Then IndexSheet.Cells(employeeRow, showCodeColumn).Value = 1
End If
Next
这也应该避免VBA错误。
如果还有任何问题,请问:)