我希望在VBA中的.Match函數中使用選定列表框項目的字符串值 - 我需要將值'1'輸入到行中其中選擇的值與特定列上的「A:A」列中的值匹配。從Excel中的參考值列表項在VBA中的匹配功能
我以爲我能做的就是爲選定的ListBox項目使用.value參數,但是這似乎要麼出錯或給我一個布爾響應,這不是我所追求的(I是在物品的實際字符串值之後)。
我已經遍歷所有項目以將Selected參數設置爲True,然後我逐個遍歷列表以向正確的範圍添加'1'。
這裏是我想會的工作代碼(但是沒有,它拋出的「運行時錯誤‘13’:類型不匹配」的錯誤。這大概是下降到。價值不是作爲一個字符串
。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或我要對這個錯誤的方式?
Tha NKS 馬特
如果找不到匹配的當前值,它會通過錯誤並停止代碼。使用'Application'而不是'WorksheetFunction'。您將需要在循環內聲明'employeeRow'作爲變體。然後你需要在賦值之前測試它是否是錯誤:'IF not IsError(employeeRow)then' –
@ScottCraner'If Not IsError(...'?我確定這是一個錯字,你試圖寫如果IsNumeric(...';) –
@DirkReichel或者可以工作,但是,你的輸入更少,邏輯更簡單 –