Ich versuche, benannte Bereiche aus dem Arbeitsblatt Wk1
in das aktive Blatt in der Arbeitsmappe zu kopieren.Kopieren benannte Bereiche in das aktive Blatt
Ich bekomme Fehlermeldungen, wenn ich den Code ausführen. Entweder wird ein Objekt nicht gesetzt oder eine Variable wurde nicht deklariert.
Sub ChangeNamedRangesOnNewWKsheet()
Dim RangeName As Name
Dim HighlightRange As Range
Dim RangeName2 As String
Dim NewRangeName As String
Dim Ws As Worksheets
Dim cs As Worksheet
Set cs = Application.ActiveSheet
''''' Delete invalid named ranges
For Each RangeName In ActiveWorkbook.Names
If InStr(1, RangeName.RefersTo, "#REF!") > 0 Then
RangeName.Delete
End If
Next RangeName
For Each RangeName In Ws
If InStr(1, RangeName, "Wk1", 1) > 0 Then
Set HighlightRange = RangeName.RefersToRange
NewRangeName = Replace(RangeName.Name, "Wk1", "cs.Name")
RangeName2 = Replace(RangeName, "='Wk1'", "'cs.Name'")
On Error Resume Next
HighlightRange.Copy Destination:=Worksheets("cs.Name").Range(RangeName2)
Range(RangeName2).Name = NewRangeName
On Error GoTo 0
End If
Next RangeName
MsgBox "Done"
End Sub
Ive änderte den Code zu diesem. Ich bekomme keine Fehlermeldungen, aber der Code funktioniert immer noch nicht. Die benannten Bereiche kopieren nicht vom Blatt Wk1 in das Blatt Active. Das einzige, was passiert ist, dass die Message Box
ÖffnetSub ChangeNamedRangesOnNewWKsheet()
Dim RangeName As Name
Dim HighlightRange As Range
Dim RangeName2 As String
Dim NewRangeName As String
Dim Cs As Worksheet
Set Cs = Application.ActiveSheet
''''' Delete invalid named ranges
For Each RangeName In ActiveWorkbook.Names
If InStr(1, RangeName.RefersTo, "#REF!") > 0 Then
RangeName.Delete
End If
Next RangeName
For Each RangeName In ActiveWorkbook.Names
If InStr(1, RangeName, "Wk1", 1) > 0 Then
Set HighlightRange = RangeName.RefersToRange
NewRangeName = Replace(RangeName.Name, "Wk1", "cs.Name")
RangeName2 = Replace(RangeName, "='Wk1'", "'cs.Name'")
On Error Resume Next
HighlightRange.Copy Destination:=Worksheets("cs.Name").Range(RangeName2)
Range(RangeName2).Name = NewRangeName
On Error GoTo 0
End If
Next RangeName
MsgBox "Done"
End Sub
Dein 'Ws' ist' Nothing' und dein 'cs' wird als Stringliteral verwendet. – GSerg
Wenn ich cs zu "cs.Name" ändere und die WS-Referenz lösche, erhalte ich immer noch eine Fehlermeldung mit dem Unterschied: – frustrationmultiplied
Ich habe diesen Code bearbeitet RangeName2 = Replace (RangeName, "= 'Wk1'", "'cs.Name '") zu RangeName2 = Ersetze (RangeName," =' Wk1 '"," cs.Name ") und deklarierte die Deklaration für ws und gelöschte ws aus dem Code. Ich bekomme immer noch die Fehlermeldung – frustrationmultiplied