Clever-Excel-Forum

Normale Version: Vor Paste-Befehl Bereich löschen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

Hier bin ich mal wieder mit einem Problemchen.

Mit meinem Makro soll ein Bereich in eine neue Arbeitsmappe in das erste Arbeitsblatt kopiert werden. Das funktionirt auch soweit. Es wäre jedoch gut, wenn der Wertebereich in dem neuen Arbeitsblatt erst einmal diie Inhalte gelöscht würden.

Wenn ich jedoch die Zeile:  Sheets("Sweep").Range("A7:M500").Clear oder Clear Contents einfüge, dann führt er mir den Paste-Befehl nicht mehr aus.

Wer weiß da was!

Code:
Sub Schaltfläche61_BeiKlick()
Dim i As Long

For i = 6 To ActiveSheet.UsedRange.Rows.Count
Next i

   Range("A6:M" & i - 1).Select
   Selection.Copy
   
Workbooks.Open "C:\Users\Frank\Documents\Aktien\Shareselect\MFormula"

With Worksheets("Sweep")
   Range("A6").Select
   Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
End With

   Call Format
   
End Sub


Public Sub Format()

'Spaltenbreite kopierte Daten
   With Worksheets("Sweep")
     .Columns("A:A").ColumnWidth = 5
     .Columns("B:C").ColumnWidth = 10
     .Columns("D:D").ColumnWidth = 25
  End With
 
  For i = 7 To ActiveSheet.UsedRange.Rows.Count
     maxrow = maxrow + 1
     Cells(i, 1) = maxrow 'Spalte 1 durchnummerieren
  Next i
 
End Sub
Hallo,

ein neues Arbeitsblatt ist doch sowieso leer.

Gruß Uwe
Hallöchen,

bei einigen Aktionen leert Excel seinen Zwischenspeicher. Du müsstest im jeweiligen Fall die Reihenfolge der Aktionen überdenken und ggf. ändern, z.B. erst Leeren, dann Kopieren und dann Einfügen.
Zitat:...ein neues Arbeitsblatt ist doch sowieso leer.

Na ja, isses eben nicht. Wenn es leer ist funktioniert ja alles. aber es sollen ja Werte aus einem anderen Arbeitsblatt übertragen werden...und wenn die alten noch drinnstehen, dann sollten die halt erst einmal weg.

Zitat:...Du müsstest im jeweiligen Fall die Reihenfolge der Aktionen überdenken und ggf. ändern, z.B. erst Leeren, dann Kopieren und dann Einfügen.

Ich wüßte nicht, wo da ein Fehler sein könnte. Das ist ja gerade das Problem. Eigentlich müßte das neue Arbeitsblatt leergeräumt werden, bevor die neuen Daten eingefügt werden... also hier:

Code:
Workbooks.Open "C:\Users\Frank\Documents\Aktien\Shareselect\MFormula"

Sheets("Sweep").Range("A7:M500").Clear

With Worksheets("Sweep")
  Range("A6").Select
  Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
End With

aber wenn ich da löschen will, bringt er mir eine Fehlermeldung, daß der Paste-Befehl danach nicht ausgeführt werden kann. Huh
Hi, in welcher Datei steht dein Code und wie ist Dateiname der zu öffnenden Datei, wo das Sheet Sweep drin ist?
Hallo,

und wo bitte ist der Copy-Befehl??? Der gehört doch hinter die Clear-Anweisung!
Zitat:...und wo bitte ist der Copy-Befehl??? Der gehört doch hinter die Clear-Anweisung!

Oben ist doch das gesamte Makro zu sehen.

Muß der Copy-Befehl denn unbedingt hinter die Clear-Anweisung?

Einfacher wär's doch:

Kopieren - neues Workbook öffnen - Bereich löschen - Werte aus Zwischenspeicher einfügen

Wie gesagt: es funktioniert ja alles, wenn das neue Arbeitsblatt leer ist.
Hallo,

Zitat:Kopieren - neues Workbook öffnen - Bereich löschen - Werte aus Zwischenspeicher einfügen


... und da issa ja auch schon ganz deutlich, Dein Denkfehler.

Copy & Paste gehören zwingend zusammen und dürfen nicht unterbrochen werden.
Es geht eben nicht, Copy ... und nun mache ich was ganz anderes ... und jetzt Paste ich.
Hallöchen,
Du kannst auch ganz einfach ausprobieren, was geht und was nicht. Mach das, was Du programmiert hast, mal genau so von Hand..
Einiges geht nicht zwischen Copy und Paste, anderes schon. Du siehst das bei manuellen Aktionen z.B. schon daran, dass die Kopiermarkierung weg ist oder auch nicht. Du kannst 1000 mal Blätter wechseln oder über Ansicht die Datei, kein Problem. Hinterher klappt das Einfügen noch. Datei öffnen? Blatt anlegen? ...? Fehlanzeige.
Wollte gerade zum Einkaufen fahren.
Dazu habe ich mir ein Programm geschrieben.
Sub Einkaufen()
With MeinAuto
   .MotorAn
   .MotorAus
   .FahrLos
End With
End Sub

Laufzeitfehler 4711:
"Die FahrLos-Eigenschaft von MeinAuto konnte nicht gesetzt werden. Debuggen?"
Ich befürchte, heute gibt es nichts mehr zu essen.  :21:

Gruß Ralf
Seiten: 1 2