簡體   English   中英

VBA運行時錯誤1004-vlookup有時有效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM