VBA Excel-在将数据从一个rangename复制/粘贴到另一个rangename时,避免不存在rangename
从图纸SheetsOmrnavne中的单元格(多个区域名称写在彼此下方)中,代码必须找到写入的第一个值区域名称,在图纸Specificationer上找到并选择具有此名称的实际区域,复制数据,转到SheetsOmrnavne上的下一个值,找到实际区域,粘贴值,然后重新开始 问题:如果在SheetsOmrnavne上写入了一个不作为范围名称存在的范围名称,如何跳过此操作 使用以下代码:如果RangeWhatFind为Nothing,则 我得到一个错误: 运行时错误“1404”:对象“U全局”的方法“范围”失败 搜索不存在的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全局”的方法
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
问候
阿克塞尔