[英]Match Index in VBA error
我正在嘗試使用索引和匹配工作表函數將項目編號從用戶表單中的組合框(ItemNum.value)與工作表上的產品列表表(“產品定價”)相匹配。 然后拉出與該工作表中相同行匹配的單元格(“產品定價”),並將它們復制到輸入數據工作表上的單元格(“i4”)(“查看照明數據”)。 問題是每次我運行宏它給我錯誤“1004無法獲取WorksheetFunction類錯誤的匹配屬性”
我的代碼是:
Private Sub InputLight_Click()
With Sheets("Review Lighting Data")
.Range("i4").Value = Application.WorksheetFunction.Index(Sheets("Product Pricing").Range("c7:c102"), Application.WorksheetFunction.Match(ItemNum.Value, Sheets("Product Pricing").Range("b7:b102"), 0))
End With
End Sub
我已經嘗試開始一個新的工作簿,試圖簡化一些事情。 到目前為止,這是我的完整代碼:
Private Sub inputbutton_Click()
Dim MatchRow As Long
Dim WS0 As Worksheet, WS1 As Worksheet
Dim R0 As Range, R1 As Range
With ThisWorkbook
Set WS0 = .Sheets("Review Lighting Data")
Set WS1 = .Sheets("Product Pricing")
End With
With WS1
Set R0 = WS1.Range("B7:B11")
Set R1 = WS1.Range("C7:C11")
End With
MatchRow = Application.Match(itemnum.Value, R0, 0)
MsgBox MatchRow
End Sub
Private Sub UserForm_Initialize()
With Me.itemnum
.AddItem "1001"
.AddItem "1002"
.AddItem "1003"
.AddItem "1004"
.AddItem "1005"
End With
End Sub
我已將項目編號輸入組合框(itemnum),沒有任何空格或任何內容。 我甚至嘗試刪除“每個數字周圍的標記,但這也不起作用。我已經嘗試輸出(MatchRow)到MsgBox中試圖捕獲錯誤但它在它之前中斷。
問題是當Match
未在范圍內找到值時,它會返回錯誤。 您可以使用IsError
處理這種情況:
Private Sub InputLight_Click()
Dim matchRes
With Sheets("Review Lighting Data")
matchRes = Application.Match(ItemNum.Value, Sheets("Product Pricing").Range("b7:b102"), 0)
If Not IsError(matchRes) Then
.Range("i4").Value = Application.Index(Sheets("Product Pricing").Range("c7:c102"), matchRes)
End If
End With
End Sub
一個好的做法是正確地確定一切。 這使代碼更易於閱讀和調試。 此外,您必須使用Application.Match
而不是Application.WorksheetFunction...
Private Sub InputLight_Click()
Dim MatchRow
Dim WS0 As Worksheet, WS1 As Worksheet
Dim R0 As Range, R1 As Range
With ThisWorkbook
Set WS0 = .Sheets("Review Lighting Data")
Set WS1 = .Sheets("Product Pricing")
End With
With WS1
Set R0 = .Range("B7:B102")
Set R1 = .Range("C7:C102")
End With
MatchRow = Application.Match(ItemNum.Value, R0, 0)
If Not IsError(MatchRow) Then
WS0.Range("I4").Value = Application.Index(R1, MatchRow)
End If
End Sub
一個非常類似的問題在這里找到: 匹配不工作Excel:錯誤1004無法獲得匹配屬性 ,其中@simoco和我也同樣處理它。
好吧,在嘗試了一系列不同的方法讓匹配索引在userform中工作后,我決定“欺騙”一點,只是在單元格中使用常規匹配索引函數。 非常感謝你的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.