Microsoft Excel

Herbers Excel/VBA-Archiv

95 Leerzeilen per Makro einfügen

Betrifft: 95 Leerzeilen per Makro einfügen von: Steve
Geschrieben am: 16.09.2014 19:33:21

Hallo!

Die Frage ist sicher trivial, aber wie kann ich denn per Makro 95 Leerzeilen unter meiner aktiven Auswahl einfügen?

Das heißt es sind 100 Zeilen gefüllt in Spalte A. Der Cursor steht auf A1 und durch starten des Makros soll der Inhalt von A2 durch einfügen von leeren Zeilen anschließend auf A97 stehen. Das ganze soll bis zum letzten Eintrag in Spalte A durchgeführt, quasi bis kein Inhalt mehr in der Zelle steht unter der man noch 95 Leerzeilen einfügen könnte.

Hab zwar schon etwas rumprobiert aber so richtig erfolgreich war ich bisher nicht.

Vielleicht kann mir jemand etwas auf die Sprünge helfen? Vielen Dank im voraus.

Beste Grüße,
Steve

  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Daniel
Geschrieben am: 16.09.2014 20:14:02

Hi

würde ich so machen (erstmal das Procedere von Hand)
1. in einer Hilfsspalte am Ende der Daten die Zeilennummer eintragen
2. diese Zeilennummern kopieren und am Datenende 95x einfügen
3. die ganze Tabelle nach dieser Hilfsspalte sortieren und die Hilfsspalte wieder löschen.

sieht als Code in etwas so aus:

Sub test()
With ActiveSheet.UsedRange
    With .Columns(.Columns.Count + 1)
       .Formula = "=Row()"
       .Copy
       With .Resize(.Rows.Count * (95 + 1))
            .PasteSpecial xlPasteValues
            .EntireRow.Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
            .ClearContents
       End With
    End With
End With
End Sub
Das ist meine bevorzugte Methode, weil Excel beim Einfügen von Zeilen relativ langsam ist, beim Sortieren jedoch sehr schnell

gruß Daniel


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Adis
Geschrieben am: 17.09.2014 13:36:21

Hallo Daniel

ich habe dein Programm ausprobiert, weil es mir am Anfang nicht ganz klar war.
Verdammt clever, Hut ab ... (so langsam gehen mir die Hüte aus)

Gruss Adis


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Daniel
Geschrieben am: 17.09.2014 14:03:23

HI
eigentlich ists ganz einfach.
Man verwendet auch in VBA die Methode, mit der es von Hand ohne VBA am einfachsten und schnellsten geht.
Die VBA-Lösung wird dann auch "unkompliziert":
keine Variablen, keine Schleifen, keine Bedingung.

Gruß Daniel


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Matthias L
Geschrieben am: 16.09.2014 20:56:41

Hallo

Markiere A2

Sub newRow()
For x = 1 To 95
 Rows(ActiveCell.Row).Insert Shift:=xlDown
Next
End Sub
Gruß Matthias


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Gerd L
Geschrieben am: 16.09.2014 21:35:33

Guten Abend, Steve!

Sub c()


Dim lngRow As Long

For lngRow = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    Rows(lngRow & ":" & lngRow + 94).Insert shift:=xlShiftDown
Next


End Sub
Gruß Gerd


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Adis
Geschrieben am: 17.09.2014 00:05:36

Hallo

Sorry, obwohl ich als Programmierer im Forum -sehr umstritten bin- verweise ich auf Excel 7 !!
Wofür braucht ihr die For Next Schleifen? Das habe ich schon vor 17 Jahren einfacher gemacht!

Range("A2:A96").Insert Shift:=xlDown

Gruss Adis


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Daniel
Geschrieben am: 17.09.2014 00:34:02

Hi Aids
Du hast da übersehen, dass die Leerzeilen nicht nur zwischen A1 und A2, sondern auch zwischen A2 und, A3, A3 und A4, A4 und A5 eingefügt werden sollen und dafür ist die Schleife.
95 Zeilen auf einmal einfügen macht Gerd ja schon.
Einem wirklich Schleifenfreie Variante (zumindest was den VBA-Code angeht), siehst du bei mir.

Gruß Daniel


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Steve
Geschrieben am: 17.09.2014 08:27:44

Vielen Dank an alle.

Hab mich jetzt für die Variante von Daniel entschieden, geht ja echt richtig fix die ganze Prozedur. So eine effiziente Abarbeitung hatte ich gar nicht erwartet :D


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Steve
Geschrieben am: 17.09.2014 12:49:55

So jetzt ist mir doch noch was aufgefallen.

Wenn ich den Code von Daniel nehme und Spalte A bis F jeweils gefüllt sind dann funktioniert es nicht mehr.

Er bricht in dieser Zeile mit Laufzeitfehler 1004 (Anwendungs- oder objektorientierter Fehler) ab:

With .Resize(.Rows.Count * (95 + 1))



  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Daniel
Geschrieben am: 17.09.2014 13:02:32

Hi
dann hast du nicht nur die Spalten A-F gefüllt, sondern auch noch was anderes gemacht.
bei mir funktioniert der Code, egal wieviel Spalten gefüllt sind.
Es muss halt genügend Platz unterhalb der Tabelle sein, damit die Zeilen eingefügt werden können.
Sollte deine Usedrange nicht zum Inhalt passen (bspw weil du ganze Spalten formatiert hast) dann vielleicht so:

With ActiveSheet.Cells(1, 1).CurrentRegion

das orientiert sich beim Ermitteln der Tabellengrösse nur am Inhalt, allerdings darf dann die Tabelle keine Leerzeilen oder Leerzellen zwischen drin enthalten.

also wie gesagt, am Code so wie ich ihn gezeigt habe, liegt der Fehler nicht.
Bitte zeige, ob du änderungen am Code vorgenommen hast oder wie deine Datei aussieht.

Gruß Daniel


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Steve
Geschrieben am: 17.09.2014 14:03:41

Also hab jetzt einfach nochmal ne neue Datei erstellt und nun geht es wieder :/ Keine Ahnung warum das nicht mehr ging.


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Adis
Geschrieben am: 17.09.2014 20:41:16

Hallo

bei eurer Diskussion ist mir etwas aufgefallen, was auch mir beim Testen Probleme bereitet hat.
Der -UsedRange.CurrentRegion- Befehl hat seine Tücken, wenn man Daniels Makro wiederholt!
Dann hat Excel sich -intern gemerkt- das UsedRange inzwischen auf Zeile 9354 steht.

Löscht man die Werte und wiederholt das Makro fliegt man auf die Nase, geht nicht!
Man muss wirklich die Zeilen ab 96 bis zum Ende löschen, -und die Datei schliessen- !!
Erst beim Neustart erkennt Excel wieder den alten Zustand bis Zeile 96 als UsedRange.
Dasd Problem mit Laufzeitfehler hatte ich auch. Nach 17 Jahren Excel weiss man warum!

Gruss Adis


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Daniel
Geschrieben am: 17.09.2014 20:50:36

Warum sollte man auch im Normalbetrieb das Marko mit derselben Datei wiederholen wollen?
Wer fügt schon Zeilen ein, nur um sie wieder zu löschen?
Man kann natürlich auch andere Methoden verwenden um die letzte Zeile zu verwenden, aber durch die Verwendung der Usedrange bin ich mir sicher, dass ich mit meiner Hilfsspalte keine vorhandenen Daten überschreibe und das ist, wenn ich Makros für mir unbekannte Dateien schreibe, nicht unwichtig.
Gruß Daniel


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Adis
Geschrieben am: 17.09.2014 22:18:39

Hallo

ich hatte dein Programm getestet, gesehen das es wundervoll klappt, aber nicht sofort
begriffen wie es funktionierte. Also löschte ich die Zeilen und wiederholte das Makro.
Es ist meine Gewohnheit mir zum lernen fremde Makros anzuschauen bis ich sie kapiere.

Dann allerdings schlaegt das -innere Wissen- von Excel zu. Er merkt sich ja den neuen
UsedRange sofort. Daran hatte ich nicht gedacht und lief in den Laufzeitfehler.

Gruss Adis


  

Betrifft: AW: 95 Leerzeilen per Makro einfügen von: Daniel
Geschrieben am: 18.09.2014 00:11:35

HI
das hängt immer davon ab, wie du löscht.
ich habe jetzt mal getestet und die leerzeilen zwischen den Werten mit der Option "Ganze Zeile" gelöscht, dann kann zieht Excel die Usedrange mit und man kann den Code problemlos mehrfach hintereinander ausführen, ohne das es zum Fehler kommt.
Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "95 Leerzeilen per Makro einfügen"