VBA Hilfe "Laufzeitfehler '1004': Die Select-Metode des Range-Objects konnte nicht ausgeführt werden"
Private Sub cmdcopy_Click()
Dim i As Long
Range("A5:D17").Copy
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name = "Kopie" Then
Application.DisplayAlerts = False
Sheets(i).Delete
Application.DisplayAlerts = True
End If
Next i
Sheets.Add
ActiveSheet.Name = "Kopie"
Range("A1").Select
ActiveCell.PasteSpecial xlPasteAll
End Sub
Ich will die oben ausgewählten Zellen kopieren, eine neue Tabelle (muss name Kopie) haben einfügen (alte Kopie löschen) und das kopierte in A1 einfügen.
Die Sub funktioniert, wenn keine Tabelle "Kopie" vorhanden ist, wenn die Tabelle da ist, gehts nicht.
Einfügen der Tabelle soll außerdem am Ende aller Tabellen sein (?????).
Danke für die Hilfe
Antwort schreiben
Antwort 1 von MixMax vom 19.05.2021, 19:38 Options
Dein Problem ist das du die Tabelle einfach "umbenennst" - das
klappt natürlich nciht wenn eine Tabelle mit dem Namen bereits
besteht.
Zitat:
ActiveSheet.Name = "Kopie"
Was soll denn passieren wenn du dies zum zweiten mal ausführst.
Du kannst natürlich feststellen ob eine Tabelle bereits existiert und
dann die Tabelle den Namen Kopie1, 2 usw geben oder du löscht
die Tabelle Kopie wenn die bereits existiert in dem Script...
Antwort 2 von izli vom 19.05.2021, 20:02 Options
Im If-Teil überprüfe ich doch alle Tabellen auf Name(Kopie) und lösche sie wenn schon vorhanden
Siehe hier:
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name = "Kopie" Then
Application.DisplayAlerts = False
Sheets(i).Delete
Application.DisplayAlerts = True
End If
Next i[
Antwort 3 von Marie_ohne_Keks vom 19.05.2021, 20:39 Options
Der Laufzeitfehler kommt doch schon in dieser Zeile
Range("A5:D17").Copy
Gruß Marie
Antwort 4 von izli vom 19.05.2021, 20:43 Options
Nein der Fehler kommt in der Zeile:
ActiveCell.PasteSpecial xlPasteAll
Und es funktioniert, wenn die Tabelle "Kopie" noch nicht da ist
auch das Löschen der schon existierenden Tabelle "Kopie" funktioniert
das neue einfügen auch
nur das einfügen des kopierten klappt nicht :-(
Antwort 5 von izli vom 19.05.2021, 20:45 Options
Problem gelöst
einfach Range().copy nach unten verschoben und es geht.
danke marie hast mich auf den richtigen weg gebracht
Antwort 6 von JoNev vom 19.05.2021, 20:57 Options
Hallo izli
auch wenn ich mit meiner Antwort ein wenig spät bin, vielleicht helfen dir die kleinen Verbesserungen dennoch.
Private Sub cmdcopy_Click()
Dim i As Long, j As Long
Application.CutCopyMode = False
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name = "Kopie" Then
Application.DisplayAlerts = False
Sheets(i).Delete
Application.DisplayAlerts = True
End If
Next i
j = Sheets.Count
Worksheets.Add After:=Sheets(j)
ActiveSheet.Name = "Kopie"
Range("A5:D17").Copy
Sheets("Kopie").Range("A1").PasteSpecial xlPasteAll
Application.CutCopyMode = True
End Sub
Gruß Jo
Antwort 7 von Marie vom 19.05.2021, 21:07 OptionsLösung
Private Sub cmdcopy_Click()
Dim i As Long
Sheets("Tabelle1").Select
Range("A5:D17").Copy
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name = "Kopie" Then
Application.DisplayAlerts = False
Sheets(i).Delete
Application.DisplayAlerts = True
End If
Next i
Sheets.Add
ActiveSheet.Name = "Kopie"
Sheets("Kopie").Range("A1").PasteSpecial Paste:=xlPasteAll
End Sub
Na so wärs auch gegangen
Gruß Marie