02.10.2016, 07:44 (Dieser Beitrag wurde zuletzt bearbeitet: 02.10.2016, 07:53 von Geri.)
Guten Morgen,
Bei Eingabe von Daten in der Eingabemaske werden vorhandene Daten überschrieben. Ich vermute, dass dies vorkommt, wenn ein Filter gesetzt ist. Wäre es möglich, dass die Filter aufgehoben werden bevor die Eingabemaske eingeblendet wird? Weiters habe ich die Sortierung ziemlich laienhaft gemacht, vielleicht kann man diese verkürzen. Sortiert wird zuerst der OP- Raum und dann die Reihenfolge der Patienten Mit bestem Dank im Voraus für eure Mühe Ich lade die Datei mit hoch, mit dem Hinweis, dass diese Datei ohne die Hilfe von Rabe und Kuwert niemals zustande gekommen wäre
Private Sub UserForm_Initialize() 'Standard für Userform setzen Dim i As Long ComboBox1.Clear ComboBox1.AddItem "Neuen Patienten hinzufügen" 'For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row For i = 4 To Columns(1).SpecialCells(xlCellTypeBlanks).Row - 1 ComboBox1.AddItem Cells(i, 1).Value & ", " & Cells(i, 2).Value Next i ComboBox1.ListIndex = 0 End Sub
ich habe deinen Code eingefügt und getestet. Das sortieren klappt wunderbar nachdem ich die Sortierung in Spalte V entfernt habe Leider klappt der Code bei der Eingabemaske nicht. Bei gesetztem Filter wird immer der letzte Datensatz überschrieben. Ohne Filter läuft die Eingabemaske ohne Probleme
Danke dir Uwe, für die Mühe die du dir meinetwegen machst
' ************************************************************** ' Modul: Eingabemaske Typ = Userform ' **************************************************************
OptionExplicit
Dim lngZeile AsLong
PrivateSub ComboBox1_Click() 'Daten aus Liste holen Dim i AsLong If ComboBox1.ListIndex <> 0 Then lngZeile = ComboBox1.ListIndex + 3 For i = 1 To 24 Me.Controls("TextBox" & i) = Cells(lngZeile, i).Value Next i Else lngZeile = Columns(1).SpecialCells(xlCellTypeBlanks).Row For i = 1 To 24 Me.Controls("TextBox" & i) = "" Next i EndIf EndSub
PrivateSub CommandButton1_Click() 'Patienten löschen Dim i AsLong If ComboBox1.ListIndex > 0 Then Rows(lngZeile).Delete For i = 1 To 24 Me.Controls("TextBox" & i) = "" Next i UserForm_Initialize EndIf EndSub
PrivateSub CommandButton2_Click() 'Daten übernehmen Dim i AsLong If TextBox1 = "" ThenExitSub For i = 1 To 24 SelectCase i CaseIs = 2, 18, 20, 22, 23, 24 'Datumfelder If IsDate(Me.Controls("TextBox" & i)) Then Cells(lngZeile, i).Value = CDate(Me.Controls("TextBox" & i)) Else Cells(lngZeile, i) = "" EndIf CaseIs = 11, 15 'Zahlenfelder If IsNumeric(Me.Controls("TextBox" & i)) Then Cells(lngZeile, i).Value = CLng(Me.Controls("TextBox" & i)) Else Cells(lngZeile, i) = "" EndIf CaseIs = 19 'Telefonnummer Cells(lngZeile, i).Value = CStr(Me.Controls("TextBox" & i)) CaseElse Cells(lngZeile, i).Value = Me.Controls("TextBox" & i) EndSelect Me.Controls("TextBox" & i) = "" Next i Range("A3:AT3" & lngZeile).Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom UserForm_Initialize EndSub
PrivateSub UserForm_Initialize() 'Standard für Userform setzen Dim i AsLong lngZeile = Columns(1).SpecialCells(xlCellTypeBlanks).Row ComboBox1.Clear ComboBox1.AddItem "Neuen Patienten hinzufügen" 'For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row For i = 4 To lngZeile - 1 ComboBox1.AddItem Cells(i, 1).Value & ", " & Cells(i, 2).Value Next i ComboBox1.ListIndex = 0 EndSub
PrivateSub CommandButton3_Click() 'Eingabe abbrechen Unload Me EndSub
03.10.2016, 15:26 (Dieser Beitrag wurde zuletzt bearbeitet: 03.10.2016, 15:56 von Geri.)
Hallo Uwe, Habe den gesamten Code kopiert; nachstehender Fehler kommt bei Patienten löschen Fehler beim Kompilieren Variable nicht definiert
Private Sub CommandButton1_Click() 'Patienten löschen Dim i As Long If ComboBox1.ListIndex > 0 Then Rows(lngZeile).Delete For i = 1 To 24 Me.Controls("TextBox" & i) = "" Next i UserForm_Initialize End If End Sub
du hast recht. Der Fehler kommt nicht mehr. Muss jetzt noch genau testen ob nichts mehr überschrieben wird. Vielen, vielen Dank Uwe, ich melde mich auf alle Fälle wenn es klappt