Eingabemaske
#1
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


Angehängte Dateien
.xlsm   OP2.xlsm (Größe: 339,5 KB / Downloads: 18)
Top
#2
Hallo Geri,

probiere es mal so:
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
Gruß Uwe
Top
#3
Hallo Geri,

zur Frage 2:
Sub Tabelle1sortieren()
 With ActiveWorkbook.Worksheets("Tabelle1").Sort
   .SortFields.Clear
   .SortFields.Add Key:=Range("V4"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("N4"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SortFields.Add Key:=Range("O4"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   .SetRange Range("A3:XEL261")
   .Header = xlYes
   .MatchCase = False
   .Orientation = xlTopToBottom
   .SortMethod = xlPinYin
   .Apply
 End With
End Sub
Gruß Uwe
Top
#4
Hallo Uwe,

werde es morgen probieren und melde mich dann. Ich habe  zuhause nur Office 2003 
Vielen Dank inzwischen
Top
#5
Guten Morgen Uwe

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

LG Geri
Top
#6
Hallo Geri,

ersetze mal den Userformcode komplett:



' **************************************************************
'  Modul:  Eingabemaske  Typ = Userform
' **************************************************************


Option Explicit

Dim lngZeile As Long

Private Sub ComboBox1_Click()                   'Daten aus Liste holen
  Dim i As Long
  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
  End If
End Sub

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

Private Sub CommandButton2_Click()              'Daten übernehmen
  Dim i As Long
  If TextBox1 = "" Then Exit Sub
  For i = 1 To 24
     Select Case i
     Case Is = 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) = ""
        End If
     Case Is = 11, 15                     'Zahlenfelder
        If IsNumeric(Me.Controls("TextBox" & i)) Then
           Cells(lngZeile, i).Value = CLng(Me.Controls("TextBox" & i))
        Else
           Cells(lngZeile, i) = ""
        End If
     Case Is = 19                           'Telefonnummer
           Cells(lngZeile, i).Value = CStr(Me.Controls("TextBox" & i))
     Case Else
        Cells(lngZeile, i).Value = Me.Controls("TextBox" & i)
     End Select
     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
End Sub

Private Sub UserForm_Initialize()               'Standard für Userform setzen
 Dim i As Long
 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
End Sub

Private Sub CommandButton3_Click()              'Eingabe abbrechen
  Unload Me
End Sub

Gruß Uwe


Angehängte Dateien
.xlsm   OP2_Kuwer.xlsm (Größe: 340,03 KB / Downloads: 8)
Top
#7
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

LG Geri
Top
#8
Hallo Geri,

damit kann ich leider nichts anfangen und auch nicht nachvollziehen.

Gruß Uwe
Top
#9
Hallo Uwe,

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

LG Geri
Top
#10
Hallo Uwe,

fantastisch, es funktioniert perfekt.
Vielen vielen Dank und einen schönen Tag noch

LG Geri
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste