[英]Excel 2016 Vlookup Function in VBA
我需要有關Excel的Vlookup函數的幫助。 我有2個工作表。 第一個是公司代碼,第二個是我需要根據公司代碼查找值。 相關代碼為:
Dim Compcode, AUC, OB As String
Dim WS1, WS2 As Worksheet
Set WS1 = ThisWorkbook.Worksheets("Main Sheet")
Set WS2 = ThisWorkbook.Worksheets("Data")
Compcode = WS1.Cells(2, 1).Value 'Company code WS1 A2
AUC = Application.WorksheetFunction.VLookup(Compcode, WS2.Range("A2:C30"), 2, False)
OB = Application.WorksheetFunction.VLookup(Compcode, WS2.Range("A2:C30"), 3, False)
我試圖修改每個變量的Dim和Vlookup函數本身,但是我總是得到相同的錯誤消息:
運行時錯誤“ 438”:對象不支持此屬性或方法
正如您所遇到的那樣, WorksheetFunction.Vlookup
對於輸入非常不穩定,並且可以輕松引發運行時錯誤。
您的問題可能是很多事情之一,但我建議的解決方案是僅使用Find
代替:
Sub test()
Dim Compcode As Variant, AUC As Variant, OB As Variant
Dim WS1 As Worksheet, WS2 As Worksheet
Set WS1 = ThisWorkbook.Worksheets("Main Sheet")
Set WS2 = ThisWorkbook.Worksheets("Data")
Compcode = WS1.Cells(2, 1).Value 'Company code WS1 A2
Dim rng As Range
Set rng = WS2.Range("A2:C30").Find(Compcode, , , xlWhole)
If Not rng Is Nothing Then
AUC = rng.Offset(0, 1).Value
OB = rng.Offset(0, 2).Value
End If
End Sub
問題可能出在很多地方。 無論如何,顯然VLOOKUP對數字和字符串有點挑剔,因此Compcode
應該是Variant
這樣的事情會解決:
Option Explicit
Public Sub TestMe()
Dim Compcode As Variant
Dim AUC As String
Dim OB As String
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Set WS1 = ThisWorkbook.Worksheets("Main Sheet")
Set WS2 = ThisWorkbook.Worksheets("Data")
Compcode = WS1.Cells(2, 1).Value
Dim rngRange As Range
Set rngRange = WS2.Range("A2:C30")
AUC = Application.WorksheetFunction.VLookup(Compcode, rngRange, 2, False)
OB = Application.WorksheetFunction.VLookup(Compcode, rngRange, 3, False)
End Sub
您應該顯式聲明每個變量,而不是c++/c
而不是用逗號聲明它們並希望VBEditor能夠理解。
我也將公式更改為一定范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.