HERBERS Excel-Forum - das Archiv

Thema: Userform Register Items wechseln

Userform Register Items wechseln
Nadine
Hallo Zusammen,

ich habe eine Userform, wo der Nutzer anhand von Registern (Abteilungen) Daten eintragen muss. Damit er nicht nach jedem Register Item den Button zum Übertragen der Daten drücken muss, sondern alle Register Items anklicken und die Felder befüllen kann, wollte ich fragen, ob jemand dazu eine Idee hat und mir helfen kann.

Code:



Private Sub btnAnlegen_Click()

Dim neueZeile As Long
Dim r As Range

With Db_Ergebnis3
neueZeile = .Cells(Db_Ergebnis3.Rows.Count, 1).End(xlUp).Row + 1

Set r = Db_Ergebnis3.Columns("A").Find(Register.SelectedItem.Caption)

.Cells(neueZeile, 1).Value = Register.SelectedItem.Caption
.Cells(neueZeile, 2) = Lb_Zivilpersonal
.Cells(neueZeile, 3) = txtAnzahl.Value
.Cells(neueZeile, 4) = txtAnzahl14.Value
.Cells(neueZeile, 5) = txtKranktage.Value
.Cells(neueZeile, 6) = Date

End With

'Prüfen, ob alle Felder befüllt sind
If txtAnzahl.Value = "" Or txtAnzahl14.Value = "" Or txtKranktage.Value = "" Then 'Or cbAbteilung.Value = "" Then
MsgBox "Bitte füllen Sie alle Felder aus.", , ""
Exit Sub
End If

Unload Me
End Sub


Vielen Dank
Nadine
AW: Userform Register Items wechseln
Oberschlumpf
Hi Nadine,

da zumindest ich auch hier nicht sehen kann, was genau du mit "mehrere Register in einem Userform(ular) du meinst, bitte ich dich...
...erstell eine ganz neue Bsp-Datei
...füg dieser Datei ein Userform mit "mehreren Registern" hinzu
...füg in jedes Register mindestens 2 Textboxen + 1 Einfügebutton hinzu
...erkläre bitte, was genau ist Db_Ergebnis3, bzw, wie/wo erhält Db_Ergebnis3 seinen Wert, so dass erfolgreich darauf zugefriffen werden kann
...und zeig uns bitte dann per Upload diese neue Bsp-Datei

Wenigstens ich (vllt auch Andere) würden dann für dich den Code zum Befüllen von Zellen erstellen, bzw deinen bestehenden Code etwas geändert übernehmen - und eben auch den Code, der erforderlich ist, damit du im Userform zuerst alle Register befüllen kannst, bevor dann mit nur 1x Buttkonklick alles in die Tabelle übertragen wird.
Aber ich kann für dich nicht das Userform "nachbauen", weil ich eben nich weiß, wie dein Userform aussieht.

zu deinem gezeigten Code noch ein Tipp:
den Code zum 'Prüfen, ob alle Felder befüllt sind, solltest du besser nach oberhalb von With Db_Ergebnis3 verschieben, da ja bis jetzt immer Zellen mit "leeren" Inhalten befüllt werden, wenn es noch leere Textboxen gibt, weil ja die Prüfung erst später erfolgt

Ciao
Thorsten
AW: Userform Register Items wechseln
Nadine
Hallo,

leider kann ich selbst die zip Datei nicht hochladen. Da ist nur noch die Userform drin, weder eine Tabelle mit Inhalt oder sonstigen Code
.
Db_Ergebnis3 ist meine Tabelle, wo die Daten mit dem Drücken des CommandButton befüllt wird.

Anbei der Code:
Option Explicit

Private Sub btnAnlegen_Click()

Dim neueZeile As Long
Dim r As Range

With Db_Ergebnis3
neueZeile = .Cells(Db_Ergebnis3.Rows.Count, 1).End(xlUp).Row + 1

Set r = Db_Ergebnis3.Columns("A").Find(Register.SelectedItem.Caption)

.Cells(neueZeile, 1).Value = Register.SelectedItem.Caption
.Cells(neueZeile, 2) = Lb_Personal
.Cells(neueZeile, 3) = txtAnzahl.Value
.Cells(neueZeile, 4) = txtAnzahl14.Value
.Cells(neueZeile, 5) = txtKranktage.Value
.Cells(neueZeile, 6) = Date

End With

If txtAnzahl.Value = "" Or txtAnzahl14.Value = "" Or txtKranktage.Value = "" Then
MsgBox "Bitte füllen Sie alle Felder aus.", , ""

Exit Sub
End If

Unload Me

End Sub


Die Registertabs sind mit Namen benannt, aber in den Eigenschaft kann man nur das ganze Register benennen. Im Code versuche ich die einzelne Registertabs auszulesen, da diese dann in die entsprechende Tabelle mit reingeschrieben werden sollen. Allerdings geht immer nur der Tab, der gerade "gedrückt" wurde, wenn ich aber Tab1 mit Daten fülle und dann Tab2 anklicke und das ebenfalls mit Daten befüllen (also die Textboxen mit Zahlen befülle), dann soll er die Daten aus Tab1 und auch von Tab2 in die Tabelle eintragen, wenn man den CommandButton betätigt. Sonst müsste der User nach jedem Tab befüllen den Button drücken, damit es übernommen wird und dies würde ich gerne noch vereinfachen.

Müsste ich da in jedem Tab neue Textboxen einfügen, die ich dann entsprechend immer anspreche ob diese gefüllt sind oder muss ich das Element "Multiseiten" nehmen?

Danke euch.
Nadine
bitte wer anders...
Oberschlumpf
Hi,

ich kann hier nicht helfen.

Ciao
Thorsten
AW: Userform Register Items wechseln
Heli
Hi,

nur ne Vermutung: du hast ein Register-Steuerelement benutzt und kein MultiPage > damit sind die Register eigentlich nur klickbare Textfelder ohne weitere Ternnung > kannst Du über Userform1.TabStrip1.Tabs(i) auslesen (Namen anpassen), mit UserForm1.TabStrip.SelectedItem.Name bekommst Du dann den aktiven Tab.

Servus, Heli
AW: Userform Register Items wechseln
Nadine
Hallo Heli,

danke dir. Im Code zu sehen, frage ich den Namen des Tabs bereits ab. Das funktioniert auch, allerdings, wenn der Nutzer die Daten einträgt und dann den Tab wechselt stehen die Zahlen natürlich weiterhin drin, aber die passen nicht mehr zu dem Tab. Dies würde ich gerne so lösen, dass der Nutzer in jedem Tab separat die entsprechenden Daten einträgt und wenn er fertig ist mit dem Klick auf dem CommandButton alle Daten aus allen Tabs in die Tabelle schreiben.
Aktuell müsste der Nutzer Tab auswählen, Daten eintragen, Button drücken, nächster Tab, Daten auswählen etc.

Gibt es vielleicht auch eine komplett andere und bessere Lösung?
Bei Multipage sind die Felder ja nur pro Page, die müsste ich jeweils mit einem separaten Namen (Textbox1, Textbox2) beschreiben. Allerdings sind die Daten die abgefragt werden überall gleich. (Hintergrund: pro Abteilung soll immer die Kranktage und Anzahl der Personen ermittelt werden)

3. Variante hab ich auch schon testweise gebaut ist, wenn ich alle Elemente (Textboxen, Textfeld, Combobox etc) in die Userform einsetze und die Combobox habe ich dann, wie eine Art Dropdown Menü hinterlegt, dass da die Abteilungen ausgewählt werden. Aber selbst da, ist jede Abteilung einzeln abzuspeichern.

Wäre eine Massenbearbeitung möglich, dass man wie eine Tabelle alle Daten von allen Abteilungen einträgt und nur 1x speichern drückt? Wäre eine Frage der Zeitersparnis und Fehlerquote bei Falscheingabe vom Nutzer soll minimiert sein.

Danke euch.