Vba 测试动态范围是否指特定范围

Vba 测试动态范围是否指特定范围,vba,excel,Vba,Excel,我正在运行一个定义动态范围的宏。我所要做的是合并一个IF语句,该语句测试动态范围是否指向特定范围。我正在尝试以下操作,但得到“运行类型错误”13:类型不匹配。有人能告诉我这有什么问题吗 Sub TestTwo() Dim colRange As Long Dim rowRange As Long Dim rngMain As Range rowRange = 10 With Worksheets(1) colRange = .Cells(10, 12).E

我正在运行一个定义动态范围的宏。我所要做的是合并一个IF语句,该语句测试动态范围是否指向特定范围。我正在尝试以下操作,但得到“运行类型错误”13:类型不匹配。有人能告诉我这有什么问题吗

Sub TestTwo()

Dim colRange    As Long
Dim rowRange    As Long
Dim rngMain     As Range

rowRange = 10

   With Worksheets(1)
    colRange = .Cells(10, 12).End(xlToLeft).Column
    Set rngMain = .Range(.Cells(rowRange + 200, colRange + 1), .Cells(217, 12))
    Range("L210:L217").FormulaR1C1 = "=+R[-60]C-R[-60]C[-1]"
    If Not rngMain = Range("L210:L217") Then Range("L210:L217").AutoFill Destination:=rngMain, Type:=xlFillDefault
   End With
End Sub
我想测试“rngMain”所指内容的原因是,如果rngMain指的是L210:L217,那么我会得到“运行时错误1004”:应用程序定义或定义的对象错误”,否则代码会按它应该的方式运行


提前感谢您的帮助。

我想您是在比较引用而不是值,您可以尝试:

If Not rngMain.Address = "$L$210:$L$217" Then Range("L210:L217").AutoFill Destination:=rngMain, Type:=xlFillDefault
但是,如果他们只选择该范围内的单个单元格,或者如果他们的选择包括该范围的一部分,该怎么办?如果愿意,还可以检查它们的选择是否与
L210:L217
相交:

If Intersect(rngMain,Range("L210:L217")) Is Nothing Then Range("L210:L217").AutoFill Destination:=rngMain, Type:=xlFillDefault

如果不是rngMain.address=“$L$210:$L$217”,可能是
。否则,您将尝试比较值(正如您所发现的,这无论如何都不会起作用)。非常好,谢谢!你知道当rngMain首先引用L210:L217时我得到“运行时错误1004”:应用程序定义或定义的对象错误”的原因吗?@SJR你比我快+1不确定,但可能是因为无法以这种方式比较多个单元格。要比较数值,你必须在每个单元格中循环。动态范围的用途是什么?L210:L217中是什么导致了错误?您在哪一行获得这些错误?