如果不是ActiveSheet.Range()为Nothing,什么也没发现,就会不断出错

时间:2019-04-01 13:42:56

标签: excel vba

我有一个子程序,可读取文本文件并将数据导入“定义的名称”单元格。文本文件中有一些我不需要的数据,因此,如果该子程序找不到匹配的单元格,则只需忽略它即可。

但是,当函数找到不存在的定义名称时,将引发1004错误。将On Error Resume Next放在Do While Not之后可解决此问题,但这更多是创可贴解决方案。

以下是引发错误的函数:

If Not ActiveSheet.Range(cellName) Is Nothing Then
    Set TxtRng = ActiveSheet.Range(cellName)

    If TxtRng = ActiveSheet.Range(cellName) Then
        TxtRng.Value = getPrice
    End If
End If

我也尝试过此版本的功能,但仍然会导致1004错误:

If ActiveSheet.Range(cellName) Is Nothing Then
    ''Do Nothing here
Else
    Set TxtRng = ActiveSheet.Range(cellName)

    If TxtRng = ActiveSheet.Range(cellName) Then
        TxtRng.Value = getPrice
    End If
End If

1 个答案:

答案 0 :(得分:3)

您必须使用错误处理,因为尝试使用不存在的范围名称会引发错误。

Dim TxtRng As Range

Set TxtRng = Nothing 'if you use this code in a loop make sure you initialize it as nothing within your loop. Otherwise you can omit this line.

On Error Resume Next
Set TxtRng = ActiveSheet.Range(cellName)
On Error Goto 0 're-activate error reporting

If Not TxtRng Is Nothing Then
    'your code
End If