Excel - VBA:如果语句不能使用"Set Range = .Range(...)"

Pha*_*anx -1 excel vba excel-vba

我注意到当我使用If语句尝试将不同范围的单元格设置为变量cityListRange时,我的VBA程序不再起作用了.基本上,如果单元格"A:20"的内容是"Metro Manila",我想将cityListRange初始化为G21:G37(马尼拉大都会的城市列表).如果没有,那么它将是另一个列表(G41:G43)(稍后在我的代码中它使用与cityListRange作为参考的匹配方法).

Set ws = ThisWorkbook.Sheets("Feuil2") 
With ws 
    If Range("A20").Value = "Metro Manila" Then
        Set cityListRange = .Range("G21:G37") 'list of cities to compare to (IN METRO MANILA)
    Else
        Set cityListRange = .Range("G41:G43") 'list of cities to compare to (IN PROVINCE)
    End If
End With
Run Code Online (Sandbox Code Playgroud)

当我将cityListRange初始化为一个且只有一个范围时,我的整个程序工作正常,但是当我添加我的if语句时,它停止工作,并且在程序结束时没有返回任何结果.你知道在这种情况下是否有使用If语句的反指示?如果是这样,最好的写作方式是什么?提前致谢 !

dot*_*NET 5

该错误可能是由于RangeIf行之前缺少的时间段.