Zellennummerierung-Automatisch(Makroproblem)

Gismo19

Ensign
Dabei seit
Okt. 2007
Beiträge
141
Hi Leute,

ich hab von nem Kollegen dieses Makro zur automatischen Zeilennummerierung bekommen.

Sub nummerieren()
Dim wks As Worksheet
Dim z As Long
Set wks = Worksheets("Tabelle1")
i = 1
For z = 1 To 500
Do While Left(wks.Cells(z, 1), 3) = "230" Or Left(wks.Cells(z, 1), 3) = "INT"
z = z + 1
Loop
wks.Cells(z, 1) = i
wks.Cells(z, 1).Font.ColorIndex = 3
i = i + 1
Next
End Sub


Das Makro funktioniert auch. Wenn eine Zeile neu hinzu kommt oder gelöscht wird nummeriert es neu durch.

PROBLEM:
Da ich aber die Zellen in der Spalte A wo die Zeilennummern stehen teilweise
zusammengeführt hab erkennt das das Makro nicht und nummeriert beispielsweise so:

....A B C ....
1..1
2 \
3..2(2-4) zusammengeführt
4 /
5..5(soll aber 3 sein)
.
.
.

Was muss ich in das Makro reinschreiben damit es richtig nummeriert?
Ich hab eine Ahnung von Makro schreiben.

Danke euch.

Gruß
Gismo
 
Zuletzt bearbeitet: (Makroproblem)
M

Mr. Snoot

Gast
Das sollte klappen:
Code:
Sub nummerieren()

Dim wks As Worksheet
Dim z As Integer
Dim i As Integer
Dim k As Integer
Set wks = Worksheets("Tabelle1")

i = 1

For z = 1 To 500

With wks.Cells(z, 1)
    k = .MergeArea.Count - 1

    If Left(.Value, 3) <> "230" And Left(.Value, 3) <> "INT" Then
        .Value = i
        .Font.ColorIndex = 3
    Else
        i = i - 1
    End If
End With

z = z + k
i = i + 1
    
Next

End Sub
 
M

Mr. Snoot

Gast
Wieso das?

Die 500 gehört doch zur Schleife:
Code:
..

For z = 1 To 500
Do While Left(wks.Cells(z, 1), 3) = "230" Or Left(wks.Cells(z, 1), 3) = "INT"

..
 

Gismo19

Ensign
Ersteller dieses Themas
Dabei seit
Okt. 2007
Beiträge
141
Danke euch.

Und wie kann ich das Makro so einstellen das es Automatisch sich up-dated wenn ich eine zeile hinzufüge?
 
Zuletzt bearbeitet:

ryan_blackdrago

Captain
Dabei seit
Nov. 2006
Beiträge
3.780
@mr.snoot
Wenn das Makro zum zweiten Mal gestartet wird, dann steht die Zahl 230 in A230 UND in A231. usw. Sprich : die Nummerierung passt dann nicht mehr (siehe Grafik).
Durch die 500 werden sämtliche Werte von 1 bis 500 korrekt nummeriert. Egal wie oft es ausgeführt wird.
 

Anhänge

Zuletzt bearbeitet:

Gismo19

Ensign
Ersteller dieses Themas
Dabei seit
Okt. 2007
Beiträge
141
@ryan_blackdrago:
Diese Zeile ist von meinem Kollegen noch drin der hatte da irgenwelche speziellen Einstellung gebraucht.
Ich glaub das wenn er "INT" in die Zelle geschrieben hatt dann wurde diese ausgelassen.

Das möchte ich aber nicht.
 
M

Mr. Snoot

Gast
@ ryan_blackdrago: ja hast recht. Ich bin davon ausgegangen, dass einfach in jeder x-beliebigen Zeile 230... stehen kann, und das eben darauf geprüft wird. Hat aber bei einer durchgehenden Nummerierung nicht viel Sinn ;)

@ Gismo19:
Code:
Sub nummerieren()

Dim wks As Worksheet
Dim z As Integer
Dim i As Integer
Dim k As Integer
Set wks = Worksheets("Tabelle1")

i = 1

For z = 1 To 500

  With wks.Cells(z, 1)
    k = .MergeArea.Count - 1
    .Value = i
    .Font.ColorIndex = 3
  End With

  z = z + k
  i = i + 1
    
Next

End Sub
 

Gismo19

Ensign
Ersteller dieses Themas
Dabei seit
Okt. 2007
Beiträge
141
Cool danke.
Es funzt einwandfrei.

Nur noch eine Kleinigkeit noch.

Wie stell ich das Makro ein das es Automatisch sich updated wenn ich z.b eine
neu Zeile einfüge oder eine lösche?
 
Top