5.4k Aufrufe
Gefragt in Tabellenkalkulation von
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

7 Antworten

0 Punkte
Beantwortet von mixmax Experte (2.2k Punkte)
Dein Problem ist das du die Tabelle einfach "umbenennst" - das
klappt natürlich nciht wenn eine Tabelle mit dem Namen bereits
besteht.

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...
0 Punkte
Beantwortet von
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[
0 Punkte
Beantwortet von
Der Laufzeitfehler kommt doch schon in dieser Zeile

Range("A5:D17").Copy
Gruß Marie
0 Punkte
Beantwortet von
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 :-(
0 Punkte
Beantwortet von
Problem gelöst

einfach Range().copy nach unten verschoben und es geht.

danke marie hast mich auf den richtigen weg gebracht
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von marie Experte (2k Punkte)
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
...