0

从工作Sheets("Omrnavne")Sheets("Specifikationer")Sheets("Omrnavne")找到实际范围,粘贴值并重新开始。

问题:如果上面写了一个Sheets("Omrnavne")不作为范围名称存在的范围名称,如何跳过这个?

使用以下代码:If Range(whatToFind) Is Nothing Then
我收到错误:

运行时错误“1404”:对象“_Global”的方法“范围”失败

搜索不存在的范围名称时。

我已经尝试了几个小时但没有成功。请帮忙 - 谢谢。

代码是:

Sub Test1()
    Dim whatToFind As String
    Sheets("Omrnavne").Select

    ' Select first line of data*.
    Range("a1").Select

    ' Set Do loop to stop when an empty cell is reached.
    Do Until IsEmpty(ActiveCell)
        whatToFind = ActiveCell.Value

       'Find rangename, select and copy
        Sheets("Specifikationer").Select
        With Sheets("Specifikationer")
            On Error Resume Next
            On Error GoTo 0

            If Range(whatToFind) Is Nothing Then ' <~~~~ ERROR HERE    
                Sheets("Omrnavne").Select
                ActiveCell.Offset(2, 0).Select
                whatToFind = ActiveCell.Value           
            Else       
                Range(whatToFind).Select
                Selection.Copy
            End If                
        End With

        ' Find and select rangename to paste to
        Sheets("Omrnavne").Select
        With Sheets("Omrnavne").Select
             ActiveCell.Offset(1, 0).Select
             whatToFind = ActiveCell.Value        
             Sheets("Specifikationer").Select
             Range(whatToFind).Select
             Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                 :=False, Transpose:=False
             Application.CutCopyMode = False
        End With

        ' Step down 1 row from present location.
        Sheets("Omrnavne").Select
        ActiveCell.Offset(1, 0).Select         
    Loop

End Sub
4

1 回答 1

0

如您所见,如果范围不存在,则该ActiveSheet.Range属性返回 not 。Nothing相反,它会产生错误。您可以DIM将对象变量作为Range. 这个变量是Nothing直到它被设置。然后,您可以尝试将此变量设置为错误处理块中的命名范围。如果在此之后变量进一步为 Nothing,则命名范围不存在。

例子:

 Dim oRange As Range
 On Error Resume Next
 Set oRange = Range("test")
 On Error GoTo 0
 If oRange Is Nothing Then
  MsgBox "No range named ""test"" present."
 Else
  MsgBox oRange.Address
 End If

问候

阿克塞尔

于 2014-11-05T09:49:10.717 回答