Zellennummerierung-Automatisch(Makroproblem)

Gismo19

Ensign
Registriert
Okt. 2007
Beiträge
151
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)
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
 
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"

..
 
Danke euch.

Und wie kann ich das Makro so einstellen das es Automatisch sich up-dated wenn ich eine zeile hinzufüge?
 
Zuletzt bearbeitet:
@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

  • nummerierung.gif
    nummerierung.gif
    10,6 KB · Aufrufe: 131
Zuletzt bearbeitet:
@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.
 
@ 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
 
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?
 
Wähle im VBA-Editor links die Tabelle aus und rechts Worksheet und SelectionChange.

Der Befehl Call nummerieren startet dann dein Makro nummerieren in Modul1.
 

Anhänge

  • excel_makro_automatisch_starten.JPG
    excel_makro_automatisch_starten.JPG
    49,6 KB · Aufrufe: 103
Zurück
Oben