在尝试执行vlookup时,对象变量或块变量未设置vba excel

时间:2018-03-15 07:23:04

标签: excel vba excel-vba range vlookup

我正在尝试在同一个工作簿中从一个工作表执行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  

2 个答案:

答案 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