Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1484to1488
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

erneute Abfrage

erneute Abfrage
25.03.2016 19:51:28
Frank
Hallo Leute
Für eine Praktikantenbeurteilung gebe ich mittels Comboboxen in einer Userform ausgewählte Zahlenwerte in ein Arbeitsblatt. Das geht soweit ganz gut, jedoch möchte ich mehrere Eingaben hintereinander machen und nicht jedesmal die Userform neu starten.
Mit:
msg = MsgBox("Wollen Sie weitere Eingaben tätigen?", vbYesNo, "Weitere Eingaben?")
bekomme ich die Abfrage, ob noch ein Datensatz eingegeben werden soll.
Nur wie geht es dann weiter?
Der komplette Code der Form lautet:
Private i
Private Sub cmbBeurteilungskriterien_Click()
frmBeurteilungskriterien.Show
End Sub
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Dim i As Integer
Dim v As Integer
Dim lastrow As Integer
Dim ws As Worksheet
If cmbAuffassungsgabe.Value = "" And cmbUrteilsfaehigkeit.Value = "" And cmbInitiative.Value = " _
" And cmbVerhalten.Value = "" And cmbFachwissen.Value = "" And cmbBelastbarkeit.Value = "" And cmbMotivation.Value = "" And cmbArbeitsmenge.Value = "" And cmbSorgfalt.Value = "" And cmbTeamverhalten.Value = "" And cmbBemerkungen.Value = "" Then
MsgBox "Es wurden keine Eingaben getätigt"
Exit Sub
End If
For i = 1 To Worksheets.Count
If UCase(Worksheets(i).Name) = UCase(Me.txtNamePraktikant.Text) And Worksheets(i).Range(" _
A500").Value  "" Then
MsgBox "Achtung! Die maximale Eingabemöglichkeit ist erreicht, es können keine Eingaben  _
mehr getätigt werden."
Unload Me
Exit Sub
End If
If UCase(Worksheets(i).Name) = UCase(Me.txtNamePraktikant.Text) Then
Set frm = frmTagesbeurteilung
Set ws = Worksheets(i)
ws.Unprotect "starten"
lastrow = ws.Range("A500").End(xlUp).Offset(1, 0).Row
With frm
ws.Cells(lastrow, 1) = .txtNamePraktikant.Value
ws.Cells(lastrow, 2) = .txtDatumTagesbeurteilung.Value
ws.Cells(lastrow, 3) = .txtNameAusbilder.Value
ws.Cells(lastrow, 4) = .cmbAuffassungsgabe.Value
ws.Cells(lastrow, 5) = .cmbInitiative.Value
ws.Cells(lastrow, 6) = .cmbVerhalten.Value
ws.Cells(lastrow, 7) = .cmbFachwissen.Value
ws.Cells(lastrow, 8) = .cmbBelastbarkeit.Value
ws.Cells(lastrow, 9) = .cmbMotivation.Value
ws.Cells(lastrow, 10) = .cmbArbeitsmenge.Value
ws.Cells(lastrow, 12) = .cmbSorgfalt.Value
ws.Cells(lastrow, 13) = .cmbTeamverhalten.Value
ws.Cells(lastrow, 14) = .cmbBemerkungen.Value
ws.Protect "starten"
End With
Worksheets(i).Visible = False
MsgBox "Hallo" & " " & txtNameAusbilder.Value & Chr(10) & "Deine Beurteilung für" & " " &  _
txtNamePraktikant.Value & " " & "wurde übernommen"
Application.ScreenUpdating = True
Unload frmBeurteilungskriterien
Unload Me
Exit Sub
Else: v = 0
End If
Next i
If v = 0 Then
MsgBox "Achtung, der Name des Praktikanten stimmt nicht mit dem Tabellenblattnamen überein!"
Unload Me
End If
End Sub

Private Sub UserForm_Initialize()
txtNamePraktikant.Value = frmRettungsdienst.txtName.Value & " " & frmRettungsdienst. _
txtAusbildungsart.Value
Me.Caption = "Tagesbeurteilung für " & txtNamePraktikant.Value & " - " & "Heute am " & Date & "  _
um " & Time
txtNamePraktikant.Locked = True
txtDatumTagesbeurteilung.Value = Date
txtNameAusbilder.Value = Sheets("Daten").Range("name2").Value
cmbAuffassungsgabe.SetFocus
cmbAuffassungsgabe.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbUrteilsfaehigkeit.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbInitiative.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbVerhalten.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbFachwissen.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbBelastbarkeit.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbMotivation.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbArbeitsmenge.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbSorgfalt.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbTeamverhalten.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
cmbBemerkungen.List = Sheets("Daten").Range("A1").CurrentRegion.Columns(3).Value
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Unload frmRettungsdienst
frmRettungsdienst.Show
End Sub

Für eure Hilfe wäre ich recht dankbar.
Gruß Frank

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: erneute Abfrage
26.03.2016 13:18:30
fcs
Hallo Frank,
bei so vielen Codezeilen und so wie es aussieht 2 Userformen kann man schlecht beurteilen an welchen Stellen anpassungen notwendig sind.
Wenn Userformen eingeblendet bleiben sollen, darfst du nicht mit
Unload Userformname
bzw.
Unload Me
arbeiten.
Du must dir dann überlegen, ob du nach dem Eintragen der Daten ins Tabellenblatt alle Eingabewerte zurücksetzen musst/willst oder einfach nur Daten für den nächsten Proktikanten ändern willst.
Außerdem gehört dann die Sub UserForm_QueryClose hier nicht rein oder musst angepasst werden.
Gruß
Franz

Anzeige
AW: erneute Abfrage
26.03.2016 20:42:56
Frank
Hallo Franz
Danke für deine Rückmeldung. Es sind in der Tat 2 Userformen vorhanden.Die eine Form liegt im Hintergrund und ist für die 2. Form nicht wichtig. Der Code ist lediglich für die eine Form, mit der im Prinzip Noten in ein Beurteilungsblatt geschrieben werden.
Bei Userform initialize werden lediglich die Comboboxen gefüllt und einige Textfelder gefüllt.
Beim Private Sub CommandButton2_Click() wird erst mal abgefragt ob die Comboboxen leer sind um dann eine Meldung auszuwerfen.Dann gibt es auch eine Höchstanzahl an Einträgen die bei Zeile 500 begrenzt ist.
Dann werden die Datensätze aus den Comboboxen in das entsprechende Tabellenblatt (das sich aus dem Namen und einem Kürzel zusammensetzt)eingetragen, der Blattschutz wird gesetzt und eine Meldung bestätigt, dass die Daten eingegebn wurden.
Zum Schluss kommt noch eine Meldung, wenn der Name des Praktikanten nicht mit dem Tabellenblattnamen übereinstimmt.
Jetzt wäre also schön, wenn mehrere Benotungen eingegeben werden, die Form nicht immer wieder neu gestartet werden müsste, sondern eben nach dem Eintragen die Möglichkeit besteht einen weiteren Datensatz einzutragen.
Ich hoffe das war verständlich rübergebracht.
Danke und frohe Ostern
Gruß Frank

Anzeige
AW: Userform Steuerung über mehrere Userformen
27.03.2016 11:34:44
fcs
Hallo Frank,
ich hab mal das gröbste der Userforms auf Basis der Makros nachgebaut nachgebaut, um Testen zu können.
In der Summe sind es ja sogar 2 Userformen, die hier im Spiel sind.
Wenn du die Eingabe in Userformen fortsetzen möchtest, ohne die Userformen jedes mal komplett neu zu laden, dann musst du mit der Unload-Anweisung vorsichtig umgehen. Hier kommt man dann mit der Hide-Methode weiter, die ein Userform ausblendet ohne die Inhalte.
Hier -als kleines Oster-Überraschungsei- meine Datei mit angepassten/ergänzten Makros für die Userformen.
https://www.herber.de/bbs/user/104619.xlsm
Gruß
Franz

Anzeige
AW: Userform Steuerung über mehrere Userformen
27.03.2016 13:09:52
Frank
Hallo Franz
Das ist in der Tat eine Osterüberraschung.
Das funktioniert genauso wie ich mir das vorgestellt hatte. Ich werde das dann mal in meine Datei einbauen und entsprechend anpassen.
Danke noch mal und ein frohes Osterfest.
Gruß Frank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige