[英]VBA runtime error 1004 - vlookup works sometimes
下面的代碼從excel用戶表單獲取輸入,查找該值並預填充用戶表單中的其他字段。
它工作愉快,但是今天早上似乎只有DealID工作的某些值,其余的給出以下錯誤:
運行時錯誤1004無法獲取worksheetfunction類的vlookup屬性
當我調試並將鼠標懸停在代碼上時,它會提供期望在字段中看到的數據。
任何建議都很好。
Private Sub GetDetailsButton_Click()
Dim xRg As Range
Set xRg = Worksheets("Deal List").Range("A:U")
Dim DealID As Long
DealID = Me.DealIDBox.Value
Me.AgentNameBox.Text = Application.WorksheetFunction.VLookup(DealID, xRg, 11, False)
Me.LineManagerNameBox.Text = Application.WorksheetFunction.VLookup(DealID, xRg, 12, False)
Me.CustomerRefBox.Text = Application.WorksheetFunction.VLookup(DealID, xRg, 8, False)
Me.ComplexMarkerBox.Text = Application.WorksheetFunction.VLookup(DealID, xRg, 15, False)
Me.DealTimeStampBox.Text = Format(Application.WorksheetFunction.VLookup(DealID, xRg, 3, False), "dd/mm/yy @ hh:mm:ss")
Me.EpicBox.Text = Application.WorksheetFunction.VLookup(DealID, xRg, 14, False)
Me.StockBox.Text = Application.WorksheetFunction.VLookup(DealID, xRg, 17, False)
Me.QuantityBox.Text = Application.WorksheetFunction.VLookup(DealID, xRg, 18, False)
Me.PriceBox.Text = Application.WorksheetFunction.VLookup(DealID, xRg, 19, False)
Me.GrossBox.Text = Application.WorksheetFunction.VLookup(DealID, xRg, 20, False)
Me.DateOfCallBox.Text = Format(Application.WorksheetFunction.VLookup(DealID, xRg, 4, False), "dd/mm/yy")
End Sub
每次只是訪問不同的列而一直查找相同的值實際上是無效的,因此我建議您使用Match來查找所需的行,然后直接訪問這些單元格:
Private Sub GetDetailsButton_Click()
Dim xRg As Range
Set xRg = Worksheets("Deal List").Range("A:U")
Dim DealID As Long
Dim matchPos
DealID = Me.DealIDBox.Value
matchPos = Application.Match(DealID, xRg.Columns(1), 0)
If IsError(matchPos) Then
matchPos = Application.Match(CStr(DealID), xRg.Columns(1), 0)
If IsError(matchPos) Then
MsgBox DealID & " not found"
Exit Sub
End If
End If
Me.AgentNameBox.Text = xRg.Cells(matchPos, 11).Value
Me.LineManagerNameBox.Text = xRg.Cells(matchPos, 12).Value
Me.CustomerRefBox.Text = xRg.Cells(matchPos, 8).Value
Me.ComplexMarkerBox.Text = xRg.Cells(matchPos, 15).Value
Me.DealTimeStampBox.Text = Format(xRg.Cells(matchPos, 3).Value, "dd/mm/yy @ hh:mm:ss")
Me.EpicBox.Text = xRg.Cells(matchPos, 14).Value
Me.StockBox.Text = xRg.Cells(matchPos, 17).Value
Me.QuantityBox.Text = xRg.Cells(matchPos, 18).Value
Me.PriceBox.Text = xRg.Cells(matchPos, 19).Value
Me.GrossBox.Text = xRg.Cells(matchPos, 20).Value
Me.DateOfCallBox.Text = Format(xRg.Cells(matchPos, 4).Value, "dd/mm/yy")
End Sub
根據您的錯誤,我想說您xRg表中的某些ID號以文本形式存儲,這就是查找失敗的原因,因此,如有必要,我還添加了代碼以搜索文本版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.