Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA Excel-在将数据从一个rangename复制/粘贴到另一个rangename时,避免不存在rangename_Excel_Vba_Copy Paste_Named Ranges - Fatal编程技术网

VBA Excel-在将数据从一个rangename复制/粘贴到另一个rangename时,避免不存在rangename

VBA Excel-在将数据从一个rangename复制/粘贴到另一个rangename时,避免不存在rangename,excel,vba,copy-paste,named-ranges,Excel,Vba,Copy Paste,Named Ranges,从图纸SheetsOmrnavne中的单元格(多个区域名称写在彼此下方)中,代码必须找到写入的第一个值区域名称,在图纸Specificationer上找到并选择具有此名称的实际区域,复制数据,转到SheetsOmrnavne上的下一个值,找到实际区域,粘贴值,然后重新开始 问题:如果在SheetsOmrnavne上写入了一个不作为范围名称存在的范围名称,如何跳过此操作 使用以下代码:如果RangeWhatFind为Nothing,则 我得到一个错误: 运行时错误“1404”:对象“U全局”的方法

从图纸SheetsOmrnavne中的单元格(多个区域名称写在彼此下方)中,代码必须找到写入的第一个值区域名称,在图纸Specificationer上找到并选择具有此名称的实际区域,复制数据,转到SheetsOmrnavne上的下一个值,找到实际区域,粘贴值,然后重新开始

问题:如果在SheetsOmrnavne上写入了一个不作为范围名称存在的范围名称,如何跳过此操作

使用以下代码:如果RangeWhatFind为Nothing,则 我得到一个错误:

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

搜索不存在的rangename时

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

代码是:

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

正如您已经看到的,如果范围不存在,ActiveSheet.Range属性不会返回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
问候

阿克塞尔