Microsoft Excel

Herbers Excel/VBA-Archiv

Zellen clearen

Betrifft: Zellen clearen von: Peter
Geschrieben am: 05.10.2014 17:11:48

Hallo,

ich habe folgenden Code:

Sub Fakeslöschen()
'
' Fakeslöschen Makro
'

'
    Sheets("Fakes").Select
    Rows("2:2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Range("A2").Select
    Sheets("Tabelle2").Select
End Sub

Dieser soll alle Zellen "clearen", denn ich kopiere in dem Tabellenblatt "Fake" immer Daten untereinander. Lösche ich diese Zellen dann lediglich, wird danach nicht wieder in A2 angefangen einzufügen, sondern dort wo vorher die letzte belegte Zeile gewesen ist.

Also Lösche ich einfach alle Zeilen.
Dadurch werden jedoh auch sämtliche Formelbezüge auf das Tabellenblatt "Fake" gelöscht und es treten dann #Bezug Fehler auf.

Ich möchte also das Datenblatte "Fake" ab A2 so löschen, dass danach wieder beim neuen reinkopieren, ab A2 untereinander eingefügt werden kann und eben nicht ab beispielsweise der letzten belgten Zeile A150 :-)

Habt Ihr eine IDee?

Grüße
Peter

  

Betrifft: AW: Zellen clearen von: Gerd L
Geschrieben am: 05.10.2014 17:34:57

Hallo Peter!

Sheets("Fakes").UsedRange.Offset(1).ClearContents
Gruß Gerd


  

Betrifft: AW: Zellen clearen von: Peter
Geschrieben am: 05.10.2014 17:59:40

Hallo Gerd,

damit passiert genau das gleiche. Die Zellen werden geleert,
das Tabellenblatt ist danach bis auf die erste Zeile leer.
Jedoch werden danach wieder ab der letzten leeren Zeile die Daten reinkopiert.
Die vorher belegten Zellen bleiben leer.


  

Betrifft: AW: Zellen clearen von: Hajo_Zi
Geschrieben am: 05.10.2014 18:06:47

du hast schon gesichert nach dem Löschen?

GrußformelHomepage


  

Betrifft: AW: Zellen clearen von: Gerd L
Geschrieben am: 05.10.2014 18:53:40

Hallo Peter!
Jedoch werden danach wieder ab der letzten leeren Zeile die Daten reinkopiert.
Die vorher belegten Zellen bleiben leer.


Meine Codezeile leert die Inhalte ab (normalerweise) Zeile 2 u. macht sonst nichts.

Wie sieht dein Code zum erneuten Füllen des Blattes "Fakes" aus?

Gruß Gerd


  

Betrifft: AW: Zellen clearen von: Peter
Geschrieben am: 06.10.2014 07:47:37

Entschuldigt, komme jetzt erst wieder dazu zu antworten:

So sieht der Code zum kopieren aus:

Sub fakekopieren()

Application.ScreenUpdating = False

letztezeile = Sheets("Burgenlink Bd 5").UsedRange.SpecialCells(xlCellTypeLastCell).Row
letztezeileFake = Sheets("Fakes").UsedRange.SpecialCells(xlCellTypeLastCell).Row

Range("A1:H" & letztezeile).Copy
Worksheets("Fakes").Range("A" & letztezeileFake + 1).PasteSpecial Paste:=xlValues
Application.ScreenUpdating = True

End Sub
Die Formel im Reiter "fake" steht in H1. Sonst sind ab Zeile 2 nur absolute Werte rein kopiert.


  

Betrifft: AW: Zellen clearen von: Daniel
Geschrieben am: 06.10.2014 10:58:34

Naja, so wie ich dir bereits in meinen ersten Beitrag geschrieben habe.
Du musst eine andere Methode zum Ermitteln der letzten befüllte Zeile verwenden.


Nicht

letztezeileFake = Sheets("Fakes").UsedRange.SpecialCells(xlCellTypeLastCell).Row
Sondern
letztezeileFake = Sheets("Fakes").cells(rows.count, 1).end(xlup).Row
Gruß Daniel


  

Betrifft: AW: Zellen clearen von: Peter
Geschrieben am: 06.10.2014 12:35:32

Daniel,kann ich dich auch mal persönlich anschreiben?
Würde Dir gern mal die Datei zeigen, welche ich hier mühsam zusammen bastel:-/

Grüße

Peter


  

Betrifft: AW: Zellen clearen von: Daniel
Geschrieben am: 06.10.2014 12:55:25

Hi
Du kannst die Datei hier hoch laden und sie uns allen zeigen.
Ich wüsste jetzt aber nicht, was daran so schwer sein sollte, diese Programmzeile abzuändern.
Wenn das mehrfach im Code vorkommt oder der Code länger ist, dann hilft dir ja die Suchfunktion des Editors, die entsprechen Stellen im Code zu finden.
Gruß Daniel


  

Betrifft: AW: Zellen clearen von: Peter
Geschrieben am: 06.10.2014 14:28:14

Hallo Daniel,

vielen Dank für Deine Geduld:-)
Habe es nun so eingerichtet und es funktioniert wunderbar.

Grüße

Peter


  

Betrifft: AW: Zellen clearen von: Daniel
Geschrieben am: 05.10.2014 18:23:59

Hi

Ich vermute mal, dass du die letzte belegte Zeile mit UsedaRange oder Specialcells(xlcelltpelastcell) ermittelt.

Das Problem ist, dass diese Werte nicht sofort angepasst werden, wenn du Zellinhalt mit .Clear löscht, sondern nur mit .Delete, welches dir aber die Formeln zerstört.

Ich würde hier die Zellen weiterhin mit .Clear löschen und dann die letzte benutzte Zeile mit Cells(Rows.Count, 1).End(xlup) ermitteln.
Das End(xlup) orientiert sich nur am Inhalt der Zellen.


Zum löschen also (und bitte ohne die Selects)

Sheets("Fakes").Usedrange.offset(1, 0).Clear
Kopieren, Einfügen und ermitteln der letzten Zeile dann so
Sheets(???).Range(???).Copy
With Sheets("Fakes")
    .cells(.Rows.count, 1).end(xlup).Offset(1, 0).pastspecial xlpasteall
End with
Gruß Daniel


  

Betrifft: AW: Zellen clearen von: Peter
Geschrieben am: 06.10.2014 08:52:55

Nach dem Löschen werden die neuen Inhalte nachwievor an die letzte vorher belegte Zelle kopiert.
Wenn ich nur ein bestimmte Anzahl von Zellen löschen müsste, würde das evtl. funktionieren.

Also A2-a1000 zum Beispiel


  

Betrifft: AW: Zellen clearen von: Daniel
Geschrieben am: 06.10.2014 09:04:11

Nein, du musst die Methode zum Ermitteln der letzten befüllten Zeile ändern.
Wie du das machen kannst, steht ja in meinem Beitrag.

Wenn du den nicht verstehst, und du konkrete Hilfe beim erstellen des Code brauchst, dann solltest du deinen Code hier zeigen und zwar den Teil, mit dem du die neuen Werte im Blatt Fakes einfügst.

Gruß Daniel


  

Betrifft: AW: Formeln ändern von: Daniel
Geschrieben am: 05.10.2014 18:37:15

Du kannst alternativ auch alle Zellbezüge auf das Blatt Fakes so gestalten, dass sie sich entweder nur auf die Zeile 1 beziehen (denn die bleibt ja stehen), oder immer auf die ganze Spalte (A:A). Da du ja nie die ganze Spalten löscht, bleiben dies Zellbezüge erhalten.

Ob das Sinnvoll ist, hängt aber auch von den Inhalten und deinen Formeln ab. Bei Matrixformel könnten Zellbezüge auf ganze Spalten problematisch sein.

Zellbezüge auf bestimmte Zeilen könntest du aber auch über die Index-Funktion realisieren:
Absolut: =Index(Fakes!$A:$A;100)
Relativ: =Index(Fakes!A:A;Zeile()+1)

Das hätte auch den Vorteil, dass hier die Formeln auch dann erhalten bleiben, falls du mal aus versehen im Blatt Fakes die Zeilen von Hand löscht.

Gruß Daniel


  

Betrifft: AW: Formeln ändern von: Peter
Geschrieben am: 06.10.2014 07:51:13

Moin Daniel,

bei den Zellbezügen handelt es sich um eine Karte.
Heißt in Spalte E + F sind x und y Koordinaten als absolute Werte und Zahlen vorhanden.
Diese X-Y Koordinaten lasse ich in ein xy-Diagramm darstellen. Werden also alle Zeilen gelöscht, so ist der Zellbezug aus dem Diagramm ebenso gelöscht.

Ich bin im Internet leider auch noch nicht fündig geworden, ob es ein Befehl gibt, der das "Löschen der Zeilen" mit einem echten "clearen" ersetzen kann.


  

Betrifft: AW: Formeln ändern von: Peter
Geschrieben am: 06.10.2014 08:51:05

Noch eine Idee.
Wenn ich nur die Zeilen A2-A1000 löschen müsste, dann würde die Formel erhalten bleiben.


 

Beiträge aus den Excel-Beispielen zum Thema "Zellen clearen"