AW: Eingabemaske - Datenzeile behalten
26.03.2012 23:42:37
fcs
Hallo Werner
du hast im Blatt "Liste" in Spalte A in Zeile 351 "Ende der Liste" eingetragen. Dadurch wurden dann auch die laufenden Nummern unterhalb dieser Zeile eingetragen.
Das stört bei der gewählten Methode wie die letzte Zeile mit einem Personeneintrag ermittelt wird.
Lösche diese Einträge ab Zeile 251.
oder Lösche alle Zahlen ab Zeile 252 abwärts und passe die mit "'geändert fcs 20120326" markierten Zeilen im Code an (1 durch 2 erstzen).
Private Sub ResetUserform()
Dim aRow, i As Long
Application.EnableEvents = False
ComboBox1.Clear
With wksData
aRow = .Cells(.Rows.Count, 2).End(xlUp).Row 'geändert fcs 20120326
ComboBox1.AddItem "neue Person hinzufügen"
Private Sub CommandButton2_Click()
'Daten Übernehmen
Dim xZeile As Long
If TextBox1 = "" Then
MsgBox "Es wurde noch kein Name eingegeben!"
Exit Sub
End If
With wksData
If ComboBox1.ListIndex = 0 Then
'Neue Person anlegen
xZeile = .Cells(.Rows.Count, 2).End(xlUp).Row + 1 geändert fcs 20120326
.Cells(xZeile, 1) = Application.WorksheetFunction.Max(.Columns(1)) + 1 'nächste lfd. Nr.
Else
'Existierenden Datensatz ändern
xZeile = ComboBox1.ListIndex + 1
End If
.Cells(xZeile, 2) = TextBox1
.Cells(xZeile, 3) = TextBox2
If IsDate(TextBox3) Then
.Cells(xZeile, 4) = CDate(TextBox3) 'Geburtstag
Else
MsgBox "Für Geburtstag ist kein zulässiger Datumswert eingetragen, Zelle bleibt leer!"
.Cells(xZeile, 4).ClearContents
End If
.Cells(xZeile, 5) = TextBox4
.Cells(xZeile, 6) = Date 'Änderungsdatum
If Me.ListBox1.ListIndex -1 Then
.Cells(xZeile, 7) = Me.ListBox1.Value 'Gruppe
End If
'Staus-ausgeschieden eintragen
If Me.CheckBox1 = True Then
.Cells(xZeile, 8) = 0
Else
.Cells(xZeile, 8) = 1
End If
If .Cells(.Rows.Count, 2).End(xlUp).Row > 2 Then 'geändert fcs 20120326
'Spalten B bis H nach Name / Vorname sortieren - laufende Nr wird nicht mit sortiert
With .Columns("B:H")
.Sort Key1:=.Range("A1"), Order1:=xlAscending, _
Key2:=.Range("B1"), Order2:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End If
Call ResetUserform
End With
End Sub
Es macht nicht unbedingt Sinn, eine Datei mit Formeln zuzupflastern.
Die Listen für aktuelle und ausgeschiedenen Mitarbeiter kann man sehr schön auch per Makro aktualisieren. Ich hab in der Datei die Makros so ingerichtet, dass die Tabellen automatisch aktualisiert werden, wenn das jeweilige Blatt aktiviert wird.
Andere Auswertungen kann man als Pivottabellenberichte anlegen, z.B. die Gruppen-Auswertungen.
https://www.herber.de/bbs/user/79567.xls
Gruß
Franz