我正在尝试在同一个工作簿中从一个工作表执行vlookup。但是获取运行时错误“对象变量或未设置块变量”。如果有人可以看看并帮助我在这里。从几天开始就被困在这里
此外,我无法在特定的调试范围内立即阻止打印值
Dim c1 As Range
Dim Values1 As Range
Dim Values2 As Range
Values1 = Sheet2.Range("A2:A14") 'Getting the error here
Values2 = Sheet1.Range("A2:C14")
AC_Row = Sheet2.Range("H1").Row
AC_Col = Sheet2.Range("H1").Column
For Each c1 In Values1
Debug.Print c1.Value 'Is this correct way to print??
Sheet2.Cells(AC_Row, AC_Col) = Application.WorksheetFunction.VLookup(c1, Values2, 2, True)
AC_Row = AC_Row + 1
Next c1
答案 0 :(得分:4)
请使用Set
关键字设置Range
对象,如下所示:
Set Values1 = Sheet2.Range("A2:A14")
Set Values2 = Sheet1.Range("A2:C14")
答案 1 :(得分:0)
谢谢大家,我能够达到预期的效果。请在下面找到我的代码。
Dim rng As Range
Dim rng1 As Range
Dim c1 As Range
Dim datavalue_Target As Variant
Dim datavalue_OuterB As Variant
Dim x As Integer
Dim y As Integer
x = 2
y = 2
Lastrow_A = Sheets("Sheet2").Cells(Sheets("Sheet2").Rows.Count, "A").End(xlUp).Row
Set rng = Application.Range("Sheet2!A2:A" & Lastrow_A)
Lastrow_C = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "C").End(xlUp).Row
Set rng1 = Application.Range("Sheet1!A2:C" & Lastrow_C)
'Debug.Print Sheet2.Cells(1, 2).Value
For Each c1 In rng.Cells
'Debug.Print c1.Value
On Error Resume Next
datavalue_Target = Application.WorksheetFunction.VLookup(c1, rng1.Cells, 2, False)
If Err = 0 Then
Sheets("Sheet2").Range("H" & x).Value = datavalue_Target
End If
On Error GoTo 0
x = x + 1
Next c1
For Each c1 In rng.Cells
'Debug.Print c1.Value
On Error Resume Next
datavalue_OuterB = Application.WorksheetFunction.VLookup(c1, rng1.Cells, 3, False)
If Err = 0 Then
Sheets("Sheet2").Range("I" & y).Value = datavalue_OuterB
End If
On Error GoTo 0
y= y + 1
Next c1