Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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
Inhaltsverzeichnis

Automatische Nummerierung

Automatische Nummerierung
26.08.2019 08:18:00
Jan
Heyho Leute,
folgendes Problem:
Ich habe eine Spalte A, in der die Werte
A00
A01
T00
A02
T01
A03
T02
T03
stehen. Ich will nun eine neue Zeile, z.B. zwischen A01 und T00, hinzufügen und dort A02 eintragen. Die restlichen "A0x" sollen dementsprechend automatisch weiter gezählt werden.
Kann man das über VBA programmieren?
Ich hatte schon eine Idee, aber bin damit gescheitert.
Vielleicht kann mir hier jemand weiterhelfen.
Vielen Dank im Voraus.
Anbei das Beispiel
https://www.herber.de/bbs/user/131614.xlsm

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische Nummerierung
26.08.2019 10:02:45
Nepumuk
Hallo Jan,
in das Modul der Tabelle:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim avntValues As Variant
Dim lngNumber1 As Long, lngNumber2 As Long
Dim ialngIndex As Long
If Not Intersect(Target, Columns(1)) Is Nothing Then
avntValues = Range(Cells(4, 1), Cells(Rows.Count, 1).End(xlUp)).Value
For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
If Not IsEmpty(avntValues(ialngIndex, 1)) Then
Select Case Left$(avntValues(ialngIndex, 1), 1)
Case "A"
avntValues(ialngIndex, 1) = "A" & Format$(lngNumber1, "00")
lngNumber1 = lngNumber1 + 1
Case "T"
avntValues(ialngIndex, 1) = "T" & Format$(lngNumber2, "00")
lngNumber2 = lngNumber2 + 1
End Select
End If
Next
Application.EnableEvents = False
Range(Cells(4, 1), Cells(Rows.Count, 1).End(xlUp)).Value = avntValues
Application.EnableEvents = True
End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Automatische Nummerierung
26.08.2019 14:30:19
Jan
Vielen lieben Dank. Funktioniert alles wunderbar :)
AW: Automatische Nummerierung
28.08.2019 08:27:41
Jan
Hi Nepumuk,
kann man in deinem Code noch hinzufügen, dass in Spalte "B" die Anzahl der Zeilen in Spalte A gezählt werden?
Sprich:
------1
A00--2
------3
A01--1
------1
T00--2
------3
Anbei wieder die Datei, die das hoffentlich besser erklärt :)
https://www.herber.de/bbs/user/131668.xlsm
LG Jan
AW: Automatische Nummerierung
28.08.2019 11:51:57
Nepumuk
Hallo Jan,
in das Modul der Tabelle fügst du vor Application.EnableEvents = True folgende Zeile ein:
Call Nummerierung(Me)

In ein Standardmodul (Menüleiste-Einfügen-Modul):
Option Explicit

Public Sub Nummerierung(ByRef probjWorksheet As Worksheet)
    Dim lngRow As Long, lngCounter As Long, lngMergeRows As Long
    lngCounter = 1
    With probjWorksheet
        For lngRow = 4 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If Not IsEmpty(.Cells(lngRow, 1).Value) Then
                If Left$(.Cells(lngRow, 1).Text, 1) = "A" Or Left$(.Cells(lngRow, 1).Text, 1) = "T" Then
                    If .Cells(lngRow, 1).MergeCells Then
                        For lngMergeRows = lngRow To lngRow + .Cells(lngRow, 1).MergeArea.Rows.Count - 1
                            .Cells(lngMergeRows, 2).Value = lngCounter
                            lngCounter = lngCounter + 1
                        Next
                        lngCounter = 1
                        lngRow = lngRow + .Cells(lngRow, 1).MergeArea.Rows.Count - 1
                    Else
                        .Cells(lngRow, 2).Value = lngCounter
                    End If
                End If
            End If
        Next
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Automatische Nummerierung
26.08.2019 10:25:57
Matthias
Moin!
Hier mal noch eine Variante, falls du auch andere Buchstaben hast.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim zeile As Long, ende As Long
Dim wert, präfix, eingabe
Dim anzahl As Long
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then
If Target.Value  "" Then
ende = Cells(Rows.Count, 1).End(xlUp).Row
wert = wertsuchen(Target)
If wert = "" Then Exit Sub
präfix = Val(Replace(Target, wert, ""))
For zeile = Target.Row + 1 To ende
eingabe = Cells(zeile, 1)
If Len(eingabe) >= Len(wert) + 1 Then
If Left(eingabe, Len(wert)) = wert And IsNumeric(Mid(eingabe, Len(wert) + 1, 1)) _
Then
präfix = präfix + 1
Cells(zeile, 1) = wert & Format(präfix, "00")
End If
End If
Next
End If
End If
End Sub
Function wertsuchen(text) As Variant
Dim anzahl As Long, stelle As Long
Dim rückgabe
For stelle = 1 To Len(text)
If IsNumeric(Mid(text, stelle, 1)) Then
Exit For
End If
Next
wertsuchen = Left(text, stelle - 1)
End Function

VG
Anzeige
AW: Automatische Nummerierung
26.08.2019 10:29:01
Matthias
Ergänzung noch:
Der Präfix ist eigentlich ein Suffix (war aber zu faul das im Code den Namen der Variablen zu ändern). :-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige