Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Nummerierung einfügen

Betrifft: Nummerierung einfügen von: Peter
Geschrieben am: 08.11.2020 15:31:06

Hallo,
ich habe eine Exceldatei mit der ich mittels UserForm2 nach Auswahl von Tabelle2 ein Datum eintrage und dann sollen die Daten in die erste freie Zeile Spalten B, C, D übertragen werden.

Wenn ich z. B. bei Datum 03.09.2022 eingebe, dann wird die Tgb.-Nr. automatisch auf "4" gesetzt und mittels Button der Wert in die erste freie Zeile übertragen.

Das klappt einwandfrei. Mein Problem ist aber, dass dies auch dann klappen solle, wenn ich noch ein Datum einfügen möchte, das vor dem 01.08.2022 ist - z. B. 02.07.2022.

Es soll auch dann die Tgb.-Nr. 4 gesetzt werden.

Könnt ihr mir bitte hierbei behilflich sein.
Datei anbei: https://www.herber.de/bbs/user/141408.xlsm

Gruss
Peter

Betrifft: AW: Nummerierung einfügen
von: onur
Geschrieben am: 08.11.2020 19:33:42

"wird die Tgb.-Nr. automatisch auf "4" gesetzt" - Und nur DU weisst, wie (warum - nach welchen Kriterien) diese 4 zustandekommt.

Betrifft: AW: Nummerierung einfügen
von: Peter
Geschrieben am: 09.11.2020 06:02:06

Hallo Onur,
hierzu habe ich die Datei angehängt.

Im Code: "Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)" wird ab Zeile

'''Anfang nummerieren Spalte D
With ActiveSheet
....

die Nummerierung ausgeführt.

Mit diesem Code funktioniert die Eingabe einwandfrei, mit dem Jahres- bzw. Buchungsjahrwechsel.

Gruss
Peter

Betrifft: AW: Nummerierung einfügen
von: onur
Geschrieben am: 09.11.2020 06:34:00

Glaubst du, ich will deinen Code analysieren, wenn du mir doch ganz einfach die Frage beantworten könntest ?
Sind wir hier auf Schnitzeljagd oder was?

Betrifft: AW: Nummerierung einfügen
von: Peter
Geschrieben am: 09.11.2020 09:59:13

Hallo Onur,
ja, die "4" wird automatisch gesetzt. Und die mittels diesem Code in UserForm2:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Dim Zähler As Integer, Nummer As Integer
Dim lzB As Long
Dim gesDat As String
'Dim gesDatV As String
Dim ADatK As String  'Anfangdatum Kalenderjahr
Dim EDatK As String  'Enddatum Kalenderjahr
Dim ADatS As String  'Anfangdatum Schuljahr
Dim EDatS As String  'Enddatum Schuljahr
Dim tgbV As String  'benötigt für vorherige TgbNr



'Anfang Prüfung ob Datum leer bzw. ob richtiges Datum bzw. wenn falsch dann "bitte Datum  _
eintragen
    If TextBox1.Text = "" Then
        TextBox1 = "Bitte Datum eintragen"
        Cancel = True
        Me.TextBox1.SelStart = 0 'markiert den Text
        Me.TextBox1.SelLength = Len(Me.TextBox1) 'markiert den Text
    
        Exit Sub
        
    ElseIf TextBox1.Text Like "##.##.####" Then 'Exit Sub
''MsgBox "TgbNr"
End If
        
'Ende Prüfung ob Datum leer bzw. ob richtiges Datum bzw. wenn falsch dann "bitte Datum  _
eintragen





'''Anfang nummerieren Spalte D
With ActiveSheet
    'Anfang nummerieren Spalte D
    lzB = Range("B65536").End(xlUp).Row
    
    
    
    
'        TextBox11 = TextBox1
'        TextBox12 = .Cells(lzB, 2)
        gesDat = .Cells(lzB, 2)

'für Kalenderjahr
    If Worksheets("Hilfstabelle").Range("C3") > "" Then
        ADatK = CDate(Worksheets("Hilfstabelle").Range("G3")) 'Kalenderjahr
        EDatK = CDate(Worksheets("Hilfstabelle").Range("H3")) 'Kalenderjahr
    
        'i.O.
        If gesDat = "Datum" And CDate(TextBox1) >= CDate(ADatK) And CDate(TextBox1) <= CDate( _
EDatK) Then
                    TextBox7 = 1
                    TextBox2.SetFocus
        'i.O.
        ElseIf gesDat > "" And CDate(TextBox1) >= CDate(ADatK) And CDate(TextBox1) <= CDate( _
EDatK) Then
            If Not CDate(gesDat) >= CDate(ADatK) And CDate(TextBox2) <= CDate(EDatK) Then
                    TextBox7 = 1
                    TextBox2.SetFocus
        'i.O.
        ElseIf gesDat > "" And CDate(TextBox1) >= CDate(ADatK) And CDate(TextBox1) <= CDate( _
EDatK) Then
            If CDate(gesDat) >= CDate(ADatK) And CDate(TextBox1) <= CDate(EDatK) Then
                tgbV = Cells(lzB, 2).Offset(0, 2)
                    TextBox7 = tgbV + 1
                    TextBox2.SetFocus
        End If
            End If
                End If
    End If

'für Schuljahr
    If Worksheets("Hilfstabelle").Range("C2") > "" Then
        ADatS = CDate(Worksheets("Hilfstabelle").Range("G2")) 'Schuljahr
        EDatS = CDate(Worksheets("Hilfstabelle").Range("H2")) 'Schuljahr
    
        'i.O.
        If gesDat = "Datum" And CDate(TextBox1) >= CDate(ADatS) And CDate(TextBox1) <= CDate( _
EDatS) Then
                    TextBox7 = 1
                    TextBox2.SetFocus
        'i.O.
        ElseIf gesDat > "" And CDate(TextBox1) >= CDate(ADatS) And CDate(TextBox1) <= CDate( _
EDatS) Then
            If Not CDate(gesDat) >= CDate(ADatS) And CDate(TextBox1) <= CDate(EDatS) Then
                    TextBox7 = 1
                    TextBox2.SetFocus
        'i.O.
        ElseIf gesDat > "" And CDate(TextBox1) >= CDate(ADatS) And CDate(TextBox1) <= CDate( _
EDatS) Then
            If CDate(gesDat) >= CDate(ADatS) And CDate(TextBox1) <= CDate(EDatS) Then
                tgbV = Cells(lzB, 2).Offset(0, 2)
                    TextBox7 = tgbV + 1
                    TextBox2.SetFocus
        End If

'        ElseIf gesDat > "" And CDate(TextBox1) <> CDate(ADatS) And CDate(TextBox1) <= CDate( _
EDatS) Then
'            If CDate(gesDat) <> CDate(ADatS) And CDate(TextBox1) <= CDate(EDatS) Then
'                tgbV = Cells(lzB, 2).Offset(0, 2)
'                    TextBox7 = tgbV + 1
'                    TextBox2.SetFocus
'        End If

            End If
                End If
    End If
End With
'Ende nummerieren Spalte D
End Sub

Gruss
Peter

Betrifft: AW: Nummerierung einfügen
von: onur
Geschrieben am: 09.11.2020 10:01:19

Nochmal - Welche Kriterien?
NICHT welcher Code!!!

Betrifft: AW: Nummerierung einfügen
von: Peter
Geschrieben am: 09.11.2020 16:34:00

Hallo Onur,
die Vergabe der "Tgb.-Nr." in Spalte D der Tabelle2 erfolgt abhängig vom aktuellen Datum in der Hilfstabelle Range I2. Grundsätzlich ist hier "=HEUTE()" eingetragen.

Um einen Test über mehrere Jahre durchzuführen, füge ich hier z. B. das Datum "09.11.2019" ein.
Dadurch ergibt sich für das laufende Schuljahr ein Anfangsdatum 01.08.2019 und ein Enddatum 31.07.2020.

Wir der erste Eintrag in Tabelle2 übertragen, wird das Feld Range B9 = "Datum" ermittelt. Dadurch wird dann die Tgb.-Nr. "1" ermittelt und in der UF TextBox7 eingetragen und mittels Button in die Tabelle übernommen.

Wird der nächste Eintrag eingegeben, wird die Tgb.-Nr. "2" ermittelt und übernommen usw..

Mein Problem ist jedoch, wenn ein neues Schuljahr vorhanden ist. Jetzt in Hilfstabelle Range I2 "09.11.2020" eintragen.

Wenn jetzt ein neuer Eintrag vorgenommen wir mit Datum z. B. "01.08.2020" dann soll der neue Eintrag mit Tgb.-Nr. "1" beginnen.

Eine noch bessere Lösung wäre jedoch, wenn auch bei Eingabe eines Datum vor dem Anfangdatum des neuen Schuljahres mit deer Tgb.-Nr. "1" begonnen würde.

Ich hoffe ich habe den Ablauf verständlich erläutert.

Gruss
Peter

Beiträge aus dem Excel-Forum zum Thema "Nummerierung einfügen"