Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Zeile per Makro einfügen und fortlaufend nummerieren

1,150 views
Skip to first unread message

Eberhard Funke

unread,
Mar 2, 2009, 11:14:48 AM3/2/09
to
Am Mon, 2 Mar 2009 04:58:06 -0800 schrieb Raffael:

> Ich habe bereits ein Makro erstellt, mit dem ich in eine Tabelle neue Zeilen
> einfügen kann.
> In der ersten Spalte der neuen Zeile soll nun eine fortlaufende Nummerierung
> erfolgen. Das funktioniert leider nicht. Wenn ich zwei Zeilen oder mehr
> einfüge, wird nur die Nummerierung der ersten eingefügten Zeile übernommen.
> Also bspw.:
>
> 1
> 2
> 3
> 3
> 3
> 3
> usw.
>
> Meine Frage nun: Wie muss ich mein Makro umschreiben, damit die neuen Zeilen
> fortlaufend nummeriert werden?
>
> Zur Orientierung hier mein Makro:
>
> Sub Makro1()
> '
> Rows("70:70").Select
> Selection.Insert Shift:=xlDown
> Range("A70").Select
> ActiveCell.FormulaR1C1 = "=R[-1]C+1"
> Range("B69:T69").Select
> Selection.AutoFill Destination:=Range("B69:T70"), Type:=xlFillDefault
> Range("B69:T70").Select
> Range("B70").Select
> End Sub


Hallo Raffael,

wenn Du *immer* wieder bei Zeile 70 eine neue Zeile einschiebst, dann
müsstest Du bei allen zuvor eingeschobenen Zeilen (z. B. jetzt 71, 72 usw.)
die Zahl um 1 erhöhen. Dazu müsstest Du jedesmal feststellen, wieviele
Zeilen Du schon eingeschoben hast.

Einfacher ist es, die "Einschiebezeile" nach unten wandern zu lassen.
Es steht z. B in A68: 1, in A69: 2

Sub Zeilen_einfügen()
Dim intI As Integer
For intI = 70 To 75
Range("A" & intI).EntireRow.Insert shift:=xlDown
Range("A" & intI).Value = Range("A" & intI - 1).Value + 1
Next
End Sub

--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de

Alexander Wolff

unread,
Mar 2, 2009, 12:15:51 PM3/2/09
to
Die Tastatur von Raffael wurde wie folgt gedrückt:
> Hallo,
>
> ich habe folgendes Problem:


Bei lfd. Numerierung bietet sich =ZEILE() an. Achtung: Das ist jedoch
volatil und kostet daher potentiell Rechenzeit.

Daher andere Möglichkeit:

Gehe zu A2. Dann: Einfügen Name Definieren lfdNr beziehtSichAuf =A1+1

Nun in die Einfügezeile statt R[-1]C+1 einfach =lfdNr einfügen (lassen).
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2


Andreas Killer

unread,
Mar 2, 2009, 12:44:24 PM3/2/09
to
Eberhard Funke schrieb:

>> Meine Frage nun: Wie muss ich mein Makro umschreiben, damit die neuen Zeilen
>> fortlaufend nummeriert werden?

Das Grundproblem ist das die Formeln nicht korrigiert werden:

>> Sub Makro1()
>> Rows("70:70").Select
>> Selection.Insert Shift:=xlDown
>> Range("A70").Select
>> ActiveCell.FormulaR1C1 = "=R[-1]C+1"
>> Range("B69:T69").Select
>> Selection.AutoFill Destination:=Range("B69:T70"), Type:=xlFillDefault
>> Range("B69:T70").Select
>> Range("B70").Select
>> End Sub

> wenn Du *immer* wieder bei Zeile 70 eine neue Zeile einschiebst, dann


> müsstest Du bei allen zuvor eingeschobenen Zeilen (z. B. jetzt 71, 72 usw.)
> die Zahl um 1 erhöhen. Dazu müsstest Du jedesmal feststellen, wieviele
> Zeilen Du schon eingeschoben hast.

Das ist falsch. Nach dem Einschieben steht in Zelle A71 die Formel
=A69+1 und in A72 =A71+1 und in A73 =A72+1 usw., d.h. nur allein durch
verändern der Formeln in A71 läßt sich die Nummerierung wiederherstellen.

Ich vermute das dies wohl auch sein Gedanke war, er hat einfach das
Autofill falsch angewendet.

> Einfacher ist es, die "Einschiebezeile" nach unten wandern zu lassen.

Das ist wohl im Prinzip richtig, jedoch sind dann die Formeln weg.

Und wenn Du Dein Makro 2mal laufen läßt ist die fortlaufende
Nummerierung hinüber, weil Du genau das außer acht gelassen hast was
Du als erstes selber angeführt hast!

Außerdem macht Raffael auch einen Autofill bis Spalte T, das hast Du
ihm unterschlagen.

Sub Makro1()
Rows("70").Insert Shift:=xlDown
Range("A70").FormulaR1C1 = "=R[-1]C+1"
Range(Range("A70"), Range("A71")).FillDown
Range("B69:T69").AutoFill _


Destination:=Range("B69:T70"), Type:=xlFillDefault

End Sub

Andreas.

Andreas Killer

unread,
Mar 2, 2009, 12:52:18 PM3/2/09
to
Alexander Wolff schrieb:

> Gehe zu A2. Dann: Einfügen Name Definieren lfdNr beziehtSichAuf =A1+1
> Nun in die Einfügezeile statt R[-1]C+1 einfach =lfdNr einfügen (lassen).

Da muss ich mal sagen: Tolle Idee!

Andreas.

Eberhard Funke

unread,
Mar 2, 2009, 2:19:57 PM3/2/09
to
Am Mon, 02 Mar 2009 18:44:24 +0100 schrieb Andreas Killer:

> Das ist falsch. Nach dem Einschieben steht in Zelle A71 die Formel
> =A69+1 und in A72 =A71+1 und in A73 =A72+1 usw., d.h. nur allein durch
> verändern der Formeln in A71 läßt sich die Nummerierung wiederherstellen.

"Das ist falsch" = True gilt wohl erst nach Einfügen Deines FillDown, das
ja die Werte in den tiefer liegenden Zeilen um 1 erhöht.

0 new messages