Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
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
Daten aus UserForm in best. Zellbereiche
10.09.2014 15:18:27
Andreas
Hallo Forum,
ich komme mal wieder nicht weiter. Ich habe eine Datei in die ich über verschiedene Userforms Einträge automatisieren möchte.
Per Commandbutton werden die Daten aus dem Userform in ein Formular geschrieben (das soll später noch ausgedruckt werden),
Hier klappt auch schon alles, bis auf einen Punkt.
- Folgende Feldern müssen ausgewählt oder beschrieben sein: Combobox1 - Combobox2 - Combobox4 - Combobox6 - Textbox1 - Textbox3 - Textbox4
Wenn nicht soll ein Warnhinweis erscheinen, dass das Userform vollständig ausgefüllt werden muß.
Als zweites sollen die Daten noch untereinander in ein dem Datum im UserForm übereinstimmende Übersichtstabelle geschrieben werden.
Dabei komme ich bei folgenden Punkten nicht weiter:
- Über Combobox1 wird das Datum ausgewählt - wenn kein entsprechendes Blatt (Übersichtstabelle) vorhanden ist, soll ein Hinweis erscheinen und der Vorgang an dieser Stelle abgebrochen werden.
- wenn die Uhrzeit in Combobox2 kleiner als 12:00 sollen die Inhalte der Felder in die erste freie Zeile in den Zeilen 3 bis 18 in der von A bis Q nichts ("") steht eingetragen werden
- wenn die Uhrzeit in Combobox2 größer als 12:00 sollen die Inhalte der Felder in die erste freie Zeile in den Zeilen 21 bis 45 in der von A bis Q nichts ("") steht eingetragen werden
Leider übersteigt das bei weitem meine Kenntnisse. Bin nur über Recherche und Dank dieses super Forums so weit gekommen.
Danke fürs lesen und die Hilfe!
mfg, Andreas

Die Datei https://www.herber.de/bbs/user/92569.xlsm wurde aus Datenschutzgründen gelöscht


13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus UserForm in best. Zellbereiche
10.09.2014 16:24:10
Frank
Hallo Andreas,
Warnhinweis, dass UF vollständig ausgefüllt sein muss:
- in Private Sub des CommadButton1_Click als erstes prüfen,ob in allen Feldern der UF gültige Werte stehen
- Falls nicht, UF unload. Warnhinweis als MsgBox ausgeben, nach Bestätigung UF neu laden (ggf. vor Unload bereits eingetragene Werte auslesen und bei der Initialisierung eintragen)
Datum checken: ComboBox1 hat ein Change-Ereignis, dem Du Code zuordnen kannst. Hier das eingetragene Datum mit den vorhandenen, zulässigen Werten vergleichen. Falls keine Übereinstimmung gefunden wird - EXIT SUB
Uhrzeit Combobox2: Inhalte welcher Felder? Eintragen in welches Blatt?
Grüsse,
Frank

Anzeige
AW: Daten aus UserForm in best. Zellbereiche
10.09.2014 17:11:56
Andreas
Hallo Frank,
vielen Dank für deine Antwort. Leider verstehe ich von VBA nicht soviel, dass ich deine Tipps umsetzen könnte.
mfg, Andreas

Wer hat Dir den Code für die UFgeschrieben?
10.09.2014 17:54:08
Frank
Hallo Andreas,
die bereits in der Tabelle enthaltenen Codebestandteile hatten mich vermuten lassen, Dein Level "VBA nur mit Recorder" sei ein Understatement. Sorry.
@Yummi: Viel Erfolg!
Grüsse,
Frank

AW: Wer hat Dir den Code für die UFgeschrieben?
10.09.2014 18:58:34
Andreas
Hallo Frank,
Danke für deine Hilfe. Habe den Code durch Recherche und dieses Forum zusammenbekommen. Jetzt komme ich aber leider nicht weiter.
Habe jetzt mal folgendes versucht:
Private Sub ComboBox1_Change()
If bUnterdrücken = False Then
bUnterdrücken = True
ComboBox1.Value = Format(ComboBox1.Value, ("dd.mm.yyyy"))
If SucheBlatt(ComboBox1.Value) = False Then
MsgBox ("Kein Tabellenblatt zum gewählten Datum vorhanden!")
Unload Me
Else
bUnterdrücken = False
'Set wks = ThisWorkbook.Sheets(ComboBox1.Value)
End If
End If
End Sub
Dieser Teil funktioniert super, musste aber den sprung zum Blatt "ComboBox1.Value" auskommentieren weil die Daten ja zuerst in das Blatt "Abholung" eingetragen werden.
siehe:

Private Sub CommandButton1_Click()
Sheets("Abholung").Activate
Dim Zeile As Long, objControl As Control, intI As Integer, wks As Worksheet
Zeile = 21
Set wks = ActiveSheet
wks.Range("B22:B43").ClearContents
For intI = 7 To 21
Set objControl = Me.Controls("Combobox" & Format(intI, "0"))
If objControl.Text  "" Then
Zeile = Zeile + 1
wks.Cells(Zeile, 2) = objControl.Text
End If
Next
For intI = 6 To 10
Set objControl = Me.Controls("Textbox" & Format(intI, "0"))
If objControl.Text  "" Then
Zeile = Zeile + 1
wks.Cells(Zeile, 2) = objControl.Text
End If
Next
Range("C11") = ComboBox1.Text 'Datum
Range("F11") = ComboBox2.Text ' Von
Range("G11") = ComboBox3.Text   '"bis oder ab"
Range("H11") = ComboBox4.Text 'Bis
'Range("F13").Value = ComboBox6.List(ComboBox6.ListIndex, 0) 'Dauer
Range("B14").Value = Me.TextBox1.Text 'Name
Range("B20").Value = Me.TextBox2.Text 'Telefon
Range("B16").Value = Me.TextBox3.Text & " " & Me.TextBox4.Text 'Strasse + Nummer
Range("F16") = ComboBox5.Text 'Etage
Range("B18").Value = Me.TextBox5.Text 'Ort
Range("B46").Value = Me.TextBox11.Text 'Bemerkungen
'jetzt erst der Wechsel zum Blatt "ComboBox1.Value"
Sheets(ComboBox1.Value).Activate
Hier müsste dann die Abfrage nach dem Inhalt der Combobox2 hin.

If ComboBox2 
Funktioniert aber nicht.
Habe deine Funktionen wie folgt angepasst (noch nicht vollständig):

Function WerteEintragen1()
Dim i As Long
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 1).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 1).Value = Me.ComboBox2.Value
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 2).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 2).Value = Me.ComboBox3.Value
Exit For
End If
Next i
End If
End Function
'wenn > 12:00
Function WerteEintragen2()
Dim i As Long
If Not wks Is Nothing Then
For i = 21 To 45
If wks.Cells(i, 1).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 1).Value = Me.ComboBox2.Value
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 21 To 45
If wks.Cells(i, 2).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 2).Value = Me.ComboBox3.Value
Exit For
End If
Next i
End If
End Function
Function CheckVollstaendig() As Boolean
'das für alle Combo und Textboxen hier noch rein
If Me.ComboBox1.Value = "" Then
CheckVollstaendig = False
End If
If Me.ComboBox2.Value = "" Then
CheckVollstaendig = False
End If
If Me.ComboBox4.Value = "" Then
CheckVollstaendig = False
End If
If Me.ComboBox6.Value = "" Then
CheckVollstaendig = False
End If
If Me.TextBox1.Value = "" Then
CheckVollstaendig = False
End If
If Me.TextBox3.Value = "" Then
CheckVollstaendig = False
End If
If Me.TextBox4.Value = "" Then
CheckVollstaendig = False
End If
'ganz am Ende dann noch
CheckVollstaendig = True
End Function
Wie Kann ich diese aufrufen? Die Funktion der Vollständigkeit müsste gleich nach dem Druck auf Commandbutton1 aufgerufen werden.
Die Funktionen WerteEintragen1 und WerteEintragen2 nach "Sheets(ComboBox1.Value).Activate".
Habe ich das richtig verstanden, dass die Funktion WerteEintragen1 die erste Zeile in den Zeilen 3 bis 18 sucht, bei der die Spalten A bis Q frei sind?
Danke nochmals für die Hilfe!
mfg, Andreas

Anzeige
Falscher Adressat
10.09.2014 19:28:14
Frank
Hallo Andreas,
Du kannst CheckVollstaendig als Variable benutzen, die entweder den Wert WAHR oder den Wert FALSCH hat, je nach Vollständigkeit der ausgefüllten UF.
Also beispielsweise als erste Zeilen des Ereignisses CommandButton1_Click
if not CheckVollstaendig then
MsgBox "UF erst vollständig ausfüllen!"
end if
Für das Eintragen von Werten musst Du nicht in das entsprechende Blatt mittels Sheets(ComboBox1.Value).Activate
wechseln. Es reicht, dem Zellbezug die komplette Referenz über Mappe und Blatt mitzugeben, z.B. Workbooks("MyWorkbook").Sheets(ComboBox1.Value).Cells(Zeile, Spalte).Value
Grüsse,
Frank

Anzeige
AW: Falscher Adressat
10.09.2014 19:44:01
Andreas
Hallo Frank,
sorry für die Verwechslung und danke für die Hilfe. Das mit dem Blattwechsel ("ComboBox1.Value).Activate") ist so gewollt, da das die Übersicht aller Aufträge eines Tages darstellt.
mfg, Andreas

AW: Daten aus UserForm in best. Zellbereiche
10.09.2014 16:54:28
yummi
Hallo Andreas,
ich hab dir mal ein paar Anregungen und Funktionen geschrieben, die dir hoffentlcih weiter helfen.
Da ich aber nicht weiß wo du was genau machen willst musst du die entsprechenden Aufrufe noch einbauen.
Gruß
yummi
https://www.herber.de/bbs/user/92574.xlsm

AW: Daten aus UserForm in best. Zellbereiche
10.09.2014 17:13:06
Andreas
Hallo Yummi,
vielen Dank für deine Hilfe, ich werd`s mal durchtesten und Rückmeldung geben.
mfg, Andreas

Anzeige
AW: Daten aus UserForm in best. Zellbereiche
10.09.2014 19:48:04
Andreas
Hallo Yammi,
Danke für deine Hilfe. Habe den Code durch Recherche und dieses Forum zusammenbekommen. Jetzt komme ich aber leider nicht weiter.
Habe jetzt mal folgendes versucht:
Private Sub ComboBox1_Change()
If bUnterdrücken = False Then
bUnterdrücken = True
ComboBox1.Value = Format(ComboBox1.Value, ("dd.mm.yyyy"))
If SucheBlatt(ComboBox1.Value) = False Then
MsgBox ("Kein Tabellenblatt zum gewählten Datum vorhanden!")
Unload Me
Else
bUnterdrücken = False
'Set wks = ThisWorkbook.Sheets(ComboBox1.Value)
End If
End If
End Sub
Dieser Teil funktioniert super, musste aber den sprung zum Blatt "ComboBox1.Value" auskommentieren weil die Daten ja zuerst in das Blatt "Abholung" eingetragen werden.
siehe:

Private Sub CommandButton1_Click()
Sheets("Abholung").Activate
Dim Zeile As Long, objControl As Control, intI As Integer, wks As Worksheet
Zeile = 21
Set wks = ActiveSheet
wks.Range("B22:B43").ClearContents
For intI = 7 To 21
Set objControl = Me.Controls("Combobox" & Format(intI, "0"))
If objControl.Text  "" Then
Zeile = Zeile + 1
wks.Cells(Zeile, 2) = objControl.Text
End If
Next
For intI = 6 To 10
Set objControl = Me.Controls("Textbox" & Format(intI, "0"))
If objControl.Text  "" Then
Zeile = Zeile + 1
wks.Cells(Zeile, 2) = objControl.Text
End If
Next
Range("C11") = ComboBox1.Text 'Datum
Range("F11") = ComboBox2.Text ' Von
Range("G11") = ComboBox3.Text   '"bis oder ab"
Range("H11") = ComboBox4.Text 'Bis
'Range("F13").Value = ComboBox6.List(ComboBox6.ListIndex, 0) 'Dauer
Range("B14").Value = Me.TextBox1.Text 'Name
Range("B20").Value = Me.TextBox2.Text 'Telefon
Range("B16").Value = Me.TextBox3.Text & " " & Me.TextBox4.Text 'Strasse + Nummer
Range("F16") = ComboBox5.Text 'Etage
Range("B18").Value = Me.TextBox5.Text 'Ort
Range("B46").Value = Me.TextBox11.Text 'Bemerkungen
'jetzt erst der Wechsel zum Blatt "ComboBox1.Value"
Sheets(ComboBox1.Value).Activate
Hier müsste dann die Abfrage nach dem Inhalt der Combobox2 hin.
If ComboBox2 

Funktioniert aber nicht.
Habe deine Funktionen wie folgt angepasst (noch nicht vollständig):
Function WerteEintragen1()
Dim i As Long
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 1).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 1).Value = Me.ComboBox2.Value
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 2).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 2).Value = Me.ComboBox3.Value
Exit For
End If
Next i
End If
End Function
'wenn > 12:00
Function WerteEintragen2()
Dim i As Long
If Not wks Is Nothing Then
For i = 21 To 45
If wks.Cells(i, 1).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 1).Value = Me.ComboBox2.Value
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 21 To 45
If wks.Cells(i, 2).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 2).Value = Me.ComboBox3.Value
Exit For
End If
Next i
End If
End Function
Function CheckVollstaendig() As Boolean
'das für alle Combo und Textboxen hier noch rein
If Me.ComboBox1.Value = "" Then
CheckVollstaendig = False
End If
If Me.ComboBox2.Value = "" Then
CheckVollstaendig = False
End If
If Me.ComboBox4.Value = "" Then
CheckVollstaendig = False
End If
If Me.ComboBox6.Value = "" Then
CheckVollstaendig = False
End If
If Me.TextBox1.Value = "" Then
CheckVollstaendig = False
End If
If Me.TextBox3.Value = "" Then
CheckVollstaendig = False
End If
If Me.TextBox4.Value = "" Then
CheckVollstaendig = False
End If
'ganz am Ende dann noch
CheckVollstaendig = True
End Function
Wie Kann ich diese aufrufen? Die Funktion der Vollständigkeit müsste gleich nach dem Druck auf Commandbutton1 aufgerufen werden.
Die Funktionen WerteEintragen1 und WerteEintragen2 nach "Sheets(ComboBox1.Value).Activate".
Habe ich das richtig verstanden, dass die Funktion WerteEintragen1 die erste Zeile in den Zeilen 3 bis 18 sucht, bei der die Spalten A bis Q frei sind?
Danke nochmals für die Hilfe!
mfg, Andreas

Anzeige
AW: Daten aus UserForm in best. Zellbereiche
11.09.2014 09:19:13
yummi
Halo Andreas,
den Aufruf von WerteEintragen1 bzw 2 machst Du ganz einfach: An die Stelle, wo Du die WErte eintragen willst WerteEintragen1 schreiben und fertig bzw WerteEintragen2.
Man könnte auch eine Funktion mit Übergabeparameter machen.
Am besten du postest deinen aktuellen Code nochmal und machst kommentare im Code was noch nicht geht und wie es gehen soll, dann schau ich mal.
Gruß
yummi

AW: Daten aus UserForm in best. Zellbereiche
11.09.2014 12:03:55
Andreas
Hallo yummi,
erstmal vielen Dank für deine Mühe. Nochmal zum grundsätzlichen Verständnis des Ablaufs:
1. Formular wird ausgefüllt
2. Per Commandbutton wird zu einem Formularblatt gesprungen und die Werte aus der UserForm dort eingetragen - dann wird zu dem Blatt gesprungen dessen Name mit dem Wert aus Combobox1 übereinstimmt - dort werden nochmals alle Daten aus dem UserForm eingefügt (nächste leere Zeile).
Nachfolgend mein Code und die Erläuterungen dazu.

Dieser Code ist zum Vervollständigen der Textbox3 (alles Ok):

Option Explicit
' verliert die Textbox den Focus, merkt sich Excel die Eingabe
Private Const STARTSPALTE = 1
Private Const WORTE_TAB = "Strassen" ' Blatt der Werte die verglichen werden
Private tb_lock As Boolean, tmp$, rng As Range, blocke_autokorrektur As Boolean
Private bUnterdrücken As Boolean
Private wks As Worksheet
Private Sub TextBox3_Change()
Dim ln&
If blocke_autokorrektur Then
blocke_autokorrektur = False
Exit Sub
End If
If tb_lock Then Exit Sub
tb_lock = True
ln = Len(TextBox3)
tmp = Finde_Vorschlag(TextBox3.Value)
If tmp  vbNullString Then
With TextBox3
.Value = tmp
.SelStart = ln
.SelLength = Len(TextBox3)
End With
End If
tb_lock = False
End Sub
Private Function Finde_Vorschlag(eingabe$) As String
Dim fa$, fd As Boolean
If eingabe = " " Or eingabe = vbNullString Then
Finde_Vorschlag = vbNullString
Exit Function
End If
With Worksheets(WORTE_TAB).Cells
Set rng = .Find(eingabe, LookIn:=xlValues, lookat:=xlPart)
If Not rng Is Nothing Then
fa = rng.Address
Do
If Left(rng.Value, Len(eingabe)) = eingabe Then
fd = True
Exit Do
End If
Set rng = .FindNext(rng)
Loop While Not rng Is Nothing And rng.Address  fa
If Not fd Then
Finde_Vorschlag = vbNullString
Exit Function
Else
Finde_Vorschlag = .Cells(rng.Row, rng.Column).Value
End If
End If
End With
End Function
Private Sub Textbox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal shift As Integer)
If KeyCode = 8 Then blocke_autokorrektur = True
If Len(TextBox3) = 0 Then blocke_autokorrektur = False
End Sub

Hier gehts los:

Private Sub CommandButton1_Click()
Hier müsste die Funktion "CheckVollstaendig()" rein. Also vor oder nach "Sheets("Abholung").Activate" ---- prüfe ob alle in der Funktion angegeben Comboboxen und Textboxen einen Wert haben -- wenn nicht - dann Meldung und zum UserForm zurück -- sonst code weiter ausführen

Sheets("Abholung").Activate
Dim Zeile As Long, objControl As Control, intI As Integer, wks As Worksheet
Zeile = 21
Set wks = ActiveSheet
wks.Range("B22:B43").ClearContents
For intI = 7 To 21
Set objControl = Me.Controls("Combobox" & Format(intI, "0"))
If objControl.Text  "" Then
Zeile = Zeile + 1
wks.Cells(Zeile, 2) = objControl.Text
End If
Next
For intI = 6 To 10
Set objControl = Me.Controls("Textbox" & Format(intI, "0"))
If objControl.Text  "" Then
Zeile = Zeile + 1
wks.Cells(Zeile, 2) = objControl.Text
End If
Next
Range("C11") = ComboBox1.Text 'Datum
Range("F11") = ComboBox2.Text ' Von
Range("G11") = ComboBox3.Text   '"bis oder ab"
Range("H11") = ComboBox4.Text 'Bis
'Range("F13").Value = ComboBox6.List(ComboBox6.ListIndex, 0) 'Dauer
Range("B14").Value = Me.TextBox1.Text 'Name
Range("B20").Value = Me.TextBox2.Text 'Telefon
Range("B16").Value = Me.TextBox3.Text & " " & Me.TextBox4.Text 'Strasse + Nummer
Range("F16") = ComboBox5.Text 'Etage
Range("B18").Value = Me.TextBox5.Text 'Ort
Range("B46").Value = Me.TextBox11.Text 'Bemerkungen
Sheets(ComboBox1.Value).Activate
Hier müssten jetzt die Funktionen "WerteEintragen1" und "WerteEintragen2" rein.
Ich habe es so probiert, funktioniert aber nicht.

'If ComboBox2 
Hier habe ich den Sprung "(ComboBox1.Value)" rausgenommen, Der Sprung erfolgt über den Commandbutton, das klappt auch super, es soll auch auf das Blatt gesprungen werden.

Private Sub ComboBox1_Change()
If bUnterdrücken = False Then
bUnterdrücken = True
ComboBox1.Value = Format(ComboBox1.Value, ("dd.mm.yyyy"))
If SucheBlatt(ComboBox1.Value) = False Then
MsgBox ("Kein Tabellenblatt zum gewählten Datum vorhanden!")
Unload Me
Else
bUnterdrücken = False
'Set wks = ThisWorkbook.Sheets(ComboBox1.Value)
End If
End If
End Sub
Hier mal eine vollständige Funktion "WerteEintragen1". Verstehe ich das richtig: suche in den Zeilen 3 bis 18 die erste freie Zeile in der alle Spalten A bis Q leer ist und schreibe dann Combobox2 in Spalte 1 , Combobox3 in Spalte 2 usw?

Function WerteEintragen1()
Dim i As Long
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 1).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 1).Value = Me.ComboBox2.Value
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 2).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 2).Value = Me.ComboBox3.Value
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 3).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 3).Value = Me.ComboBox4.Value
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 10).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 10).Value = Me.ComboBox6.List(ComboBox6.ListIndex, 0)
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 4).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 4).Value = Me.Textbox1.Text
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 5).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 5).Value = Me.Textbox2.Text
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 6).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 6).Value = Me.TextBox3.Text
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 7).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 7).Value = Me.TextBox4.Text
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 8).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 8).Value = Me.TextBox5.Text
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 9).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 9).Value = Me.ComboBox7.Value & " " & Me.ComboBox8.Value & " " &  _
Me.ComboBox9.Value & " " &
Me.ComboBox10.Value & " " & Me.ComboBox11.Value & " " & Me.ComboBox12.Value & " " & Me. _
ComboBox13.Value & " " &
Me.ComboBox14.Value & " " & Me.ComboBox15.Value & " " & Me.ComboBox16.Value & " " & Me. _
ComboBox17.Value & " " &
Me.ComboBox18.Value & " " & Me.ComboBox19.Value & " " & Me.ComboBox20.Value & " " & Me. _
ComboBox21.Value & " " &
Me.TextBox6.Text & " " & Me.TextBox7.Text & " " & Me.TextBox8.Text & " " & Me.TextBox9.Text & "  _
" & Me.TextBox10.Text
Exit For
End If
Next i
End If
If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 16).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 16).Value = "x"
Exit For
End If
Next i
End If
End Function
Und hier noch die vollständige Funktion: CheckVollstaendig()

Function CheckVollstaendig() As Boolean
'das für alle Combo und Textboxen hier noch rein
If Me.ComboBox1.Value = "" Then
CheckVollstaendig = False
End If
If Me.ComboBox2.Value = "" Then
CheckVollstaendig = False
End If
If Me.ComboBox4.Value = "" Then
CheckVollstaendig = False
End If
If Me.ComboBox6.Value = "" Then
CheckVollstaendig = False
End If
If Me.TextBox1.Value = "" Then
CheckVollstaendig = False
End If
If Me.TextBox3.Value = "" Then
CheckVollstaendig = False
End If
If Me.TextBox4.Value = "" Then
CheckVollstaendig = False
End If
'ganz am Ende dann noch
CheckVollstaendig = True
End Function
Und hier noch der restliche Code:

Private Sub UserForm_Initialize()
bUnterdrücken = False
With Me.ComboBox3
.AddItem "bis"
.AddItem "ab"
.ListIndex = 0
End With
With Me.ComboBox1
.RowSource = "Userform!A3:A66"
.ListIndex = -1
End With
With Me.ComboBox2
.RowSource = "Zeit"
.ListIndex = -1
End With
With Me.ComboBox4
.RowSource = "Zeit"
.ListIndex = -1
End With
With Me.ComboBox5
.RowSource = "Etage"
.ListIndex = -1
End With
With Me.ComboBox6
.RowSource = "Dauer"
.ListIndex = -1
End With
With Me.ComboBox7
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox8
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox9
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox10
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox11
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox12
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox13
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox14
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox15
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox16
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox17
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox18
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox19
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox20
.RowSource = "Artikel"
.ListIndex = -1
End With
With Me.ComboBox21
.RowSource = "Artikel"
.ListIndex = -1
End With
End Sub
Private Sub ComboBox2_Change()
ComboBox2.Value = Format(ComboBox2.Value, ("hh:mm"))
End Sub
Private Sub ComboBox4_Change()
ComboBox4.Value = Format(ComboBox4.Value, ("hh:mm"))
End Sub
Danke! mfg, Andreas

Anzeige
AW: Daten aus UserForm in best. Zellbereiche
11.09.2014 14:41:28
yummi
Hallo Andreas,
mit Datei wär leichter, aber ich versuchs mal so zu erklären:
1.)
in dein Commandbutton_click
fragst du als erstes if CheckVollstaendig = true then
das entsprechende else kommt genau vor das end function
else
MsgBox("DAten vervollständigen!!!"
end if
2.) Was geht denn bei dem Aufruf von WErtEintragen1 und WertEintragen2 nicht?
falls es um 12:00 uhr geht und du eine fixe Liste hast dann frag nicht nach 12:00 uhr sondern nach Listindex 3.) WertEintragen:

If Not wks Is Nothing Then
For i = 3 To 18
If wks.Cells(i, 1).Value = "" Then
'eintragen und verlassen
wks.Cells(i, 1).Value = Me.ComboBox2.Value
wks.Cells(i, 2).Value = Me.ComboBox3.Value
wks.Cells(i, 3).Value = Me.Combobox4.value  'und alle weitere boxen
Exit For
End If
Next i
End If
ich bin davon ausgegangen, dass du eine Zeile immer komplett füllst (deswegen ja CheckVollstaendig), deswegen überprüfe ich nur ob die erste Spalte leer ist.
Du könntest zwar noch vor jedes schreiben prüfen ob die Zelle leer ist aber dann bekommst du evtl einen DS nicht in 1 Zeile, was Du glaube ich nicht willst.
3.) sry bei checkVollstaendig hatte ich noch ein Fehler

Function CheckVollstaendig() As Boolean
Dim cCont As Control
Dim bRet As Boolean
bRet = True  'Rückgabewert mit ok vorbesetzen
For Each cCont In Me.Controls    'durchlaufe alle Controls auf dem Userform
If TypeName(cCont) = "TextBox" Or TypeName(cCont) = "ComboBox" Then   'prüfe nur Text  _
und Comboboxen
If cCont.Value = "" Then   'kein Eintrag
bRet = False           'Rückgabewert auf false
End If
End If
Next cCont
CheckVollstaendig = bRet     'Rückgabewert zurückgeben
End Function

Das sollte dir erstmal ein Stück weiterhelfen, hoffe ich
Gruß
yummi
Wenn ich nochmal drauf schauen soll, poste deine Mappe nochmal, kann aber erst morgen wieder schauen.

Anzeige
AW: Daten aus UserForm in best. Zellbereiche
12.09.2014 11:12:49
Andreas
Hallo yummi,
habe deine Tipps noch eingebaut, jetzt funktioniert alles super.
Vielen Dank für deine Geduld und Hilfe!
Nen schönen Tag noch.
mfg, Andreas

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige