AW: VBA:UserForm, in der zutreffende ID Zeile Eintrage
30.03.2019 16:23:13
Werner
Hallo Charly,
bei der Neuanlage eines Datensatzes brauchst du doch die Combobox mit der ID gar nicht. Die ID hast du doch schon im Blatt stehen. Schmeiß die Combobox doch einfach aus der Userform raus.
Teste mal den Code hier:
Private Sub Cbu_Üb1_Ers_Click()
Dim sh As Worksheet, a As Long, n As Long
Dim z As Long, i As Long, boLeer As Boolean
Set sh = ThisWorkbook.Sheets("RO")
'Button "Übernemen" im Fram > Stammdaten
If VBA.IsNumeric(Me.CB_ID1_Ers.Value) = False Then
MsgBox "Bitte wählen Sie eine ID aus.", vbCritical
Exit Sub
End If ' ComboBox "ID"
If VBA.IsNumeric(Me.CB_WB_Ers.Value) = False Then
MsgBox "Bitte wählen Sie einen Wohnbereich aus.", vbCritical
Exit Sub
End If ' ComboBox "WB"
If VBA.IsNumeric(Me.CB_Zi_Ers.Value) = False Then
MsgBox "Bitte wählen Sie eine Zimmernummer aus.", vbCritical
Exit Sub
End If ' ComboBox "Zi."
If Me.CB_Name_Ers.Value = "" Then
MsgBox "Bitte wählen Sie einen Namen aus der Liste.", vbCritical
Exit Sub
End If ' ComboBox "Bew. Name"
If Me.CB_Kasse_Ers.Value = "" Then
MsgBox "Bitte wählen Sie eine Versicherung aus der Liste.", vbCritical
Exit Sub
End If ' ComboBox "Kasse"
If Me.CB_Privat_Ers.Value = "" Then
MsgBox "Ist der Bew. Privatpatient? Ja / Nein / k.A. bitte wählen Sie aus", vbCritical
Exit Sub
End If ' ComboBox "Kasse (Privat)"
If Me.CB_Ärzt_Ers.Value = "" Then
MsgBox "Bitte wählen Sie einen Arzt aus der Liste", vbCritical
Exit Sub
End If ' ComboBox "Arzt"
If VBA.IsNumeric(Me.TB_Date1_Ers.Value) = False Then
MsgBox "Bitte geben Sie ein Datum an!.", vbCritical
Exit Sub
End If ' ComboBox "Arzt."
If VBA.IsNumeric(Me.TB_Date2_Ers.Value) = False Then
MsgBox "Bitte geben Sie ein Erstellung Datum an!.", vbCritical
Exit Sub
End If ' ComboBox "Erstellungs Datum."
Select Case Me.CB_WB_Ers
Case "WB 1"
a = 6
z = 80
Case "WB 2"
a = 83
z = 147
Case "WB 3"
a = 152
z = 228
Case "Haus"
a = 233
z = 271
Case Else
End Select
For i = a To z Step 2
If sh.Cells(i, 5) = "" Then
n = i
boLeer = True
Exit For
End If
Next i
If boLeer Then
sh.Unprotect "1234"
'sh.Range("C" & n).Value = Me.CB_ID1_Ers.Value ' ID
sh.Range("E" & n).Value = Me.CB_WB_Ers.Value
sh.Range("G" & n).Value = Me.CB_Zi_Ers.Value
sh.Range("I" & n).Value = Me.CB_Name_Ers.Value
sh.Range("M" & n).Value = Me.CB_Kasse_Ers.Value
sh.Range("N" & n).Value = Me.CB_Privat_Ers.Value
sh.Range("P" & n).Value = Me.CB_Ärzt_Ers.Value
If IsDate(TB_Date1_Ers.Text) Then sh.Range("R" & n).Value = CDate(TB_Date1_Ers.Text)
If IsDate(TB_Date2_Ers.Text) Then sh.Range("K" & n).Value = CDate(TB_Date2_Ers.Text)
sh.Protect "1234"
Me.CB_ID1_Ers.Value = ""
Me.CB_WB_Ers.Value = ""
Me.CB_Zi_Ers.Value = ""
Me.CB_Name_Ers.Value = ""
Me.CB_Kasse_Ers.Value = ""
Me.CB_Privat_Ers.Value = ""
Me.CB_Ärzt_Ers.Value = ""
Me.TB_Date1_Ers.Value = ""
Me.TB_Date2_Ers.Value = ""
MsgBox "Neuer Datensatz wurde hinzugefügt", vbInformation
Else
MsgBox "Kein Platz mehr im " & Me.CB_WB_Ers & " vorhanden."
End If
Set sh = Nothing
End Sub
Als erstes mußt du im Blatt Daten die Bezeichnungen für die Wohnbereiche ändern. Bitte dort WB 1, WB 2, WB 3 und Haus erfassen.
Die Codzeile, die den Wert aus der Combobox mit der ID ins Blatt schreibt habe ich mal auskommentiert, so dass eine dort ausgewählte ID nicht ins Blatt geschrieben wird.
Gruß Werner