Clever-Excel-Forum

Normale Version: Eingabemaske
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Wünsche einen schönen Tag,
und würde mich freuen wenn mir jemand bei den nachfolgenden Problemen helfen könnte

In meiner Tabelle möchte ich oben noch 2 Zeilen einfügen.
Im VBA Code der Eingabemaske weiß ich nun nicht wo ich überall ändern muss,dass die Dateneingabe erst in der 4 Zeile beginnen soll.
In der Eingabemaske sollte bei jenen Feldern wo Zahlen sind diese in auch in der Tabelle als Zahl bzw Datum übernommen werden da sonst der Filter und andere Berechnungen nicht funktionieren
Die Tagesfilterung sollte vom Datum welches z.B. in A2 eingetragen wird übernommen werden
Das gleiche gilt bei der Abfrage eine Zeitraums von bis

Ich bin für jegliche Unterstützung dankbar
Profis werden sofort sehen "Viel kopiert und wenig verstanden"
Hänge meine Datei an

LG Geri

[attachment=5786]
Hi,

(23.06.2016, 13:16)Geri schrieb: [ -> ]In meiner Tabelle möchte ich oben noch 2 Zeilen einfügen.

Du könntest in dem Code überall statt +1 dann +3 schreiben:
Code:
TextBox1 = Cells(ComboBox1.ListIndex + 1, 1)
Guten Morgen,
erstmal vielen Dank, dass du meiner angenommen hast.
Ich habe den Code überall so abgeändert wo ich den List Index mit 1 gefunden habe
Das Ergebnis; In der 1. eingefügten leeren Zeile erfolgt der Eintrag und die 2. Zeile wird gelöscht
Habe ich etwas übersehen, wo ich noch eine Änderung machen muss?

LG Geri
Hi,

(24.06.2016, 04:08)Geri schrieb: [ -> ]Habe ich etwas übersehen, wo ich noch eine Änderung machen muss?

ne, hast Du nicht. Mein Vorschlag war zu einfach gedacht, das funktioniert so nicht.
Ich muß da erst mal rumprobieren.
Vielleicht fällt jemand Anderem was ein. Die Makros gehen mit Sicherheit auch deutlich kürzer.

Wo sollen denn die leeren Zeilen eingefügt werden, über dem Tabellenkopf oder über der bisherigen ersten Patientenzeile (Mustermann)?
In A2 steht kein Datum.
Hallo,

die Zeilen sollten über dem Tabellenkopf eingefügt werden.
Da möchte ich die Überschrift für das Datum und dem Datum von bis eingeben 
In der zweiten Zeile dann die jeweiligen Datums
Die Commandbuttons für die Filter könnte ich dann auch da unterbringen
Vielen Dank für deine Mühe
Geri
Hallo Geri,

Code:
Private Sub UserForm_Initialize()
  Dim i As Long
  ComboBox1.Clear
  ComboBox1.AddItem "Neuen Patienten hinzufügen"
  For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row
      ComboBox1.AddItem Cells(i, 1) & ", " & Cells(i, 2)
  Next i
  ComboBox1.ListIndex = 0
End Sub

und die anderen Makros wie Ralf schrieb mit Index + 3.

Gruß Uwe
Hi Uwe,

(24.06.2016, 10:09)Kuwer schrieb: [ -> ]und die anderen Makros wie Ralf schrieb mit Index + 3.

wenn dann aber ein neuer Patient eingegeben wird, werden die zwei vorhandenen Patienten in die ersten beiden Zeilen des Arbeitsblattes verschoben.
Hi 
die Daten werden in der richtigen Stelle eingetragen
Es kommt jetzt aber der nachstehende Fehler 

Columns("A:X").Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
UserForm_Initialize
End Sub

Lade mal die geänderte Datei hoch

Vielen Dank an euch 

[attachment=5806]
Entschuldigung,
habe jetzt eine ganze Eingabe gemacht und gesehen, dass in der 2. oben eingefügten Zeile die Daten eingefügt werden
Hi,

(24.06.2016, 11:41)Geri schrieb: [ -> ]Entschuldigung,
habe jetzt eine ganze Eingabe gemacht und gesehen, dass in der 2. oben eingefügten Zeile die Daten eingefügt werden

Uwe hatte ja geschrieben, daß der ".Listindex + 3" lauten muß. Es fehlte noch an zwei Stellen:
beim Löschen und beim Übernehmen

Das Sortieren habe ich mal auskommentiert und das Feststellen der letzten belegten Zeile verallgemeinert, damit es auch für Excel > 2010 und damit größere Dateien funktioniert.
Die TextBox-Orgie habe ich jeweils mit einer Schleife ersetzt.
Die ganzen kleinen leeren Makros können entfernt werden.

Das ist alles, was Du an Makros benötigst:
Code:
Option Explicit

Private Sub ComboBox1_Click()                   'Daten aus Liste holen
  Dim i As Long
  If ComboBox1.ListIndex <> 0 Then
     For i = 1 To 24
        Me.Controls("TextBox" & CStr(i)) = Cells(ComboBox1.ListIndex + 3, i)
     Next i
  Else
     For i = 1 To 24
        Me.Controls("TextBox" & CStr(i)) = ""
     Next i
     
  End If
End Sub

Private Sub CommandButton1_Click()              'Patienten löschen
  Dim i As Long
  If ComboBox1.ListIndex > 0 Then
     Rows(ComboBox1.ListIndex + 3).Delete
     For i = 1 To 24
        Me.Controls("TextBox" & CStr(i)) = ""
     Next i
     UserForm_Initialize
  End If
End Sub

Private Sub CommandButton2_Click()                 'neuen Patienten übernehmen
  Dim xZeile As Long
  Dim i As Long
 
  If TextBox1 = "" Then Exit Sub
  If ComboBox1.ListIndex = 0 Then
     xZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1     'Letzte Zeile der Spalte A
     '      xZeile = [A65536].End(xlUp).Row + 1
  Else
     xZeile = ComboBox1.ListIndex + 3
  End If
 
  For i = 1 To 24
     Cells(xZeile, i) = Me.Controls("TextBox" & CStr(i))
  Next i
 
  For i = 1 To 24
     Me.Controls("TextBox" & CStr(i)) = ""
  Next i
 
  '   Columns("A:X").Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  UserForm_Initialize
End Sub

Private Sub UserForm_Initialize()               'Userform zurücksetzen
  Dim i As Long
  ComboBox1.Clear
  ComboBox1.AddItem "Neuen Patienten hinzufügen"
  For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row
     ComboBox1.AddItem Cells(i, 1) & ", " & Cells(i, 2)
  Next i
  ComboBox1.ListIndex = 0
End Sub

Private Sub CommandButton3_Click()              'Eingabe abbrechen
  Unload Me
End Sub
[attachment=5807]
Seiten: 1 2