Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro Zeilen einfügen

Makro Zeilen einfügen
16.10.2007 09:03:00
Niki
Hallo zusammen!
In einer Spalte habe ich Werte bis Zeile 2000 stehn (ohne Leerzeilen)
Jetzt brauch ich zwischen jeder Zeile 4 Leerzeilen eingefügt und würde das
gerne mit einem Makro machen...kann mir dabei jemenad helfen?
Vielen DANK!

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Zeilen einfügen
16.10.2007 09:15:51
Chaos
Servus Niki,
z.B. so:

Sub zeile()
Application.ScreenUpdating = False
Dim zeile As Long
For zeile = 2000 To 1 Step -1 ' fügt auch vor der Zeile 1 4 leere ein; wenn nicht ,dann statt 1  _
2 schreiben
If Cells(zeile, 1).Value  "" Then
Dim I As Long
For I = 1 To 4
Cells(zeile, 1).Insert Shift:=xlDown
Next I
End If
Next zeile
Application.ScreenUpdating = True
End Sub


gruß
Chaos

perfekt
16.10.2007 09:20:43
Niki
Du hast mir grad nen Haufen Arbeit erspart....freu mich und nen schönen Tag!

Kleiner Performancetipp
16.10.2007 09:43:00
{Boris}
Hi Chaos,
lass mal jeweils laufen:

Option Explicit
Declare Function GetTickCount Lib "kernel32" () As Long
Sub til()
Dim start As Long
start = GetTickCount
Dim x As Long
Application.ScreenUpdating = False
For x = 1 To 2000 Step 5
Rows(x & ":" & x + 3).Insert
Next x
Application.ScreenUpdating = True
MsgBox "Dauer in Millisekunden: " & GetTickCount - start
End Sub



Sub zeile()
Dim start As Long
Application.ScreenUpdating = False
Dim zeile As Long
For zeile = 2000 To 1 Step -1 ' fügt auch vor der Zeile 1 4 leere ein; wenn nicht ,dann statt  _
1 _
2 schreiben
If Cells(zeile, 1).Value  "" Then
Dim I As Long
For I = 1 To 4
Cells(zeile, 1).Insert Shift:=xlDown
Next I
End If
Next zeile
Application.ScreenUpdating = True
MsgBox "Dauer in Millisekunden: " & GetTickCount - start
End Sub


Grüße Boris

Anzeige
Uups...
16.10.2007 10:05:03
{Boris}
Hi,
...ich hatte in dem Makro zeile() die Variable start nicht gefüttert.
Dim start As Long
start = GetTickCount
...und hier der weitere Code
Grüße Boris

AW: @Boris
16.10.2007 11:13:00
Chaos
Servus Boris,
ist natürlich schneller, aber ich habe es in der Regel nicht so eilig und bei einmaligen Ausführungen schon 2-mal nicht. Aber man lernt gerne was dazu.
Gruß
Chaos

AW: @Chaos
16.10.2007 11:23:39
{Boris}
Hi,
Aber man lernt gerne was dazu.
Genau so war es gedacht. Für eine einmalige Aktion kann man hingegen ein paar Sekunden warten - ist wohl immer noch bequemer und schneller, als alles händisch zu machen ;-)
Grüße Boris

Anzeige
AW: was zum Lernen für alle
16.10.2007 23:06:00
Daniel
Hi
ja wenn alle noch was lernen wollen, dann will ich hier auch noch mal ne weiter Variante zur Diskussion stellen, was vom Prinzip her etwas anders funktioniert, dafür aber c.a. 30x schneller als der Vorschlag von Boris ist:

Sub vierLeerzeilen()
dim i as integer
Columns(1).Insert
With Range("A1:A2000")
.FormulaLocal = "=Zeile()"
.Formula = .Value
for i = 1 to 4
.Copy Range("A65536").End(xlUp).Offset(1, 0)
next
.CurrentRegion.Sort key1:=Range("A1"), header:=xlNo
.EntireColumn.Delete
End With
End Sub


einzige Bedingung ist, die 8000 Zeilen drunter sollten leer sein, falls nicht, müsste man sie noch kurz einfügen.
Gruß, Daniel

Anzeige
AW: @Chaos
17.10.2007 00:50:53
Daniel
HI
Genau so war es gedacht. Für eine einmalige Aktion kann man hingegen ein paar Sekunden warten - ist wohl immer noch bequemer und schneller, als alles händisch zu machen ;-)
vielleicht ist mein Rechner ja nicht der schellste, aber im Vergleich zum ersten Vorschlag von Chaos bin ich ja von Hand schneller als das Makro.
Gruß, Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige