PDA

Vollständige Version anzeigen : Wiederholt Zeilen einfügen via VBA


augs
07.05.2009, 13:13
Servus zusammen,

gern möchte ich in meinem aktuellen Tabellenblatt wiederholt eine bestimmte Anzahl von Zeilen einfügen.


Sub einfügen()
Dim i As Integer

For i = 1 To 15000 Step 19
Sheets("Sheet1").Rows(i).Insert
Next
End Sub


Mit obigem Code wird nun zumindest in der ersten Zeile und dann immer 19 Zeilen weiter eine Leerzeile eingefügt. Ich möchte nun noch die Anzahl der einzufügenden Zeilen angeben können. Also z.B. alle 19 Zeilen 6 weitere Zeilen einfügen. Hier komme ich aber nicht weiter.

Es wäre super, wenn mir jemand von Euch weiterhelfen könnte.

Vielen Dank

Augs

NoNet
07.05.2009, 14:13
Hallo augs,

so geht's :

Sheets("Sheet1").Rows(i).Resize(6).Insert

IngGi
07.05.2009, 14:20
Hallo Augs,

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> einf&uuml;gen()
<span class="TOKEN">Dim</span> lngZeile <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
&nbsp;
<span class="TOKEN">For</span> lngZeile = 1 <span class="TOKEN">To</span> 15000 <span class="TOKEN">Step</span> 24
Sheets(&quot;Sheet1&quot;).Rows(lngZeile &amp; &quot;:&quot; &amp; lngZeile + 5).Insert
<span class="TOKEN">Next</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>&nbsp;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Dafür musst du bei Rows() statt nur einer Zeile mit der Zeilenvariablen einen entsprechend großen Bereich nach obigem Muster angeben, also Zeilenvariable / Doppelpunkt / Zeilenvariable plus Anzahl einzufügende Zeilen minus 1. Ausserdem musst du die Zahl hinter Step ebenfalls um die Anzahl der einzufügenden Zeilen erhöhen.

Noch zwei generelle Tipps: Es macht sich bezahlt, für Variablen sprechende Namen nach ungarischer Notation zu verwenden (Google: ungarische Notation). Dann weiß man bei größeren Programmen auch später noch, was sich hinter den Variablen verbirgt.

Ausserdem solltest du Variablen für Zeilen und Spalten immer als Long deklarieren. Der Umfang von Integer (bis 32767) reicht für die maximale Zeilenzahl in Excel nicht aus und ab Excel2007 auch nicht mehr für die maximale Spaltenzahl.

Gruß Ingolf

augs
07.05.2009, 14:29
Vielen Dank für Eure schnelle Hilfe!

Ich versuche es gleich einmal....Mom plz

So, habe nun beides versucht. Die Variante von Dir, NoNet, funktioniert zwar berücksichtigt aber leider nicht, dass die Tabelle bereits gefüllt ist und die grundsätzliche Reihenfolge der Einträge gleich bleiben soll. Also es werden wirklich alle 19 Zeilen 6 weitere eingefügt. Aber als Basis wird hier immer die erste Zeile genommen.

Die Variante von Dir, IngGi, funktioniert so wie ich mir das erhofft hatte. Nach 19 Zeilen werden 6 leere Zeilen eingefügt, von dieser Zeile aus wird nach 19 weiteren der nächste Satz eingefügt. Vielen Dank auch für die zusätzlichen Tipps zur Notation und Deklaration.

Vielen Dank Euch!

Gruß

Augs