Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
876to880
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
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nummerierung

Nummerierung
10.06.2007 19:25:07
Cordula
Hallo Excel-Forum,
vor längerer Zeit haben mir Matthias G und Beni folgendes Makro erstellt, um Spalte A automatisch zu nummerieren. Das funktioniert auch einwandfrei. Nun soll aber doch nicht nach dem MAX-Wert gesucht werden, um diesen zu verwenden sondern das Makro soll sich die niedrigste fehlende Zahl suchen und diese benutzen. Also, durch das Löschen von Datensätzen sind die vorhandenen z.B. mit 1 3 5 6 7 9 10 usw. nummeriert. Die nächst niedrigste wäre also die fehlende 2, die beim Einfügen eines neuen DS verwendet werden soll. Ist das machbar? Wäre toll, wenn Ihr mir helfen könntet. Danke
LG
Cordula

Private Sub Worksheet_Change(ByVal Target As Range)
'Werte in Spalte A nach unten ausfüllen soweit wie Einträge in Spalte C
Dim lz As Integer
If Not Intersect(Target, Range("C4:C" & Rows.Count)) Is Nothing Then
If Cells(Target.Row, 1) = "" Then
lz = WorksheetFunction.Max(Cells(Rows.Count, 3).End(xlUp).Row, 4) ' letzte Zeile/min.4
Cells(Target.Row, 1) = WorksheetFunction.Max(Range(Cells(4, 1), Cells(lz, 1))) + 1
End If
End If
End Sub


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nummerierung
10.06.2007 20:11:57
Josef
Hallo Cordula,
probier mal.
' **********************************************************************
' Modul: Tabelle3 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim vTmp As Variant, vLng() As Variant
Dim lngI As Long

If Target.Count = 1 Then
    If Target.Column = 3 And Target.Row > 3 Then
        If Len(Cells(Target.Row, 1)) = 0 Then
            
            vTmp = Range("A4:A" & Application.Max(Cells(Rows.Count, 1).End(xlUp).Row, 4))
            
            If Not IsArray(vTmp) Then
                Cells(Target.Row, 1) = Application.Max(Range("A4:A" & _
                    Application.Max(Cells(Rows.Count, 1).End(xlUp).Row, 4))) + 1
                Exit Sub
            End If
            
            Redim vLng(1 To UBound(vTmp, 1))
            
            For lngI = 1 To UBound(vTmp, 1)
                If Not IsEmpty(vTmp(lngI, 1)) Then
                    vLng(lngI) = Clng(vTmp(lngI, 1))
                Else
                    vLng(lngI) = ""
                End If
            Next
            
            QuickSort vLng
            
            For lngI = 1 To UBound(vLng)
                If vLng(lngI) > lngI Then Exit For
            Next
            
            Cells(Target.Row, 1) = lngI
            
        End If
    End If
End If
End Sub
Sub QuickSort(data() As Variant, Optional UG, Optional OG)
Dim P1&, P2&, T1 As Variant, T2 As Variant

UG = IIf(IsMissing(UG), LBound(data), UG)
OG = IIf(IsMissing(OG), UBound(data), OG)

P1 = UG
P2 = OG
T1 = data((P1 + P2) / 2)

Do
    
    Do While (data(P1) < T1)
        P1 = P1 + 1
    Loop
    
    Do While (data(P2) > T1)
        P2 = P2 - 1
    Loop
    
    If P1 <= P2 Then
        T2 = data(P1)
        data(P1) = data(P2)
        data(P2) = T2
        P1 = P1 + 1
        P2 = P2 - 1
    End If
    
Loop Until (P1 > P2)

If UG < P2 Then QuickSort data, UG, P2
If P1 < OG Then QuickSort data, P1, OG

End Sub

Gruß Sepp

Anzeige
das ist ja der Hammer!!:-))
Cordula
Hallo Sepp...
ist ja perfekt! Es funktioniert ***freu*freu*gins**.. und dann soooo schnell. Da ist mir sogar jetzt das Gewitter völlig wurscht!
Tausenmillionen Dank!
Liebe Grüße
Cordula

AW: der Hammer!!die negative Seite:-((
11.06.2007 09:00:52
Gert
Hallo Cordula,
solltest Du diese Lösung für finanztechnische Themen (RechnungNr; BuchungsNr o ä ) benötigen,
ist davon abzuraten.
Da z.B. eine RechnungsNr nur "einmalig" vergeben werden darf. Selbst wenn diese gelöscht wird,
darf diese "RechnungsNr" nicht mehr vergeben werden. Es sollte eine entsprechende "Gegenbuchung" zum Nachweis, erfolgen.
mfg
Gert

Anzeige
@Gerd
11.06.2007 19:44:00
Cordula
Hallo Gerd,
danke für deine Info. Die steuerrechtliche Seite ist mir bekannt. Hier handelt es sich tatsächlich nur um die Nummerierung von Artikeln, um sie später besser zuordnen zu können.
Liebe Grüße
Cordula

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige