Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

Textboxen und Frames in Userform

Textboxen und Frames in Userform
10.06.2020 19:32:38
Memo
Abend zusammen,
habe vor kurzem mir ein Userform aus dem Forum zusammengebaut.
Leider darf ich die Datei nicht mitschicken. Habe jedoch ein Bild angefügt wo Ihr mein Anliegen verstehen würdet.
Ich habe insgesamt 8 Textboxen sowie 2 Frames.
Das Eingabebutton soll wenn man draufklickt überprüfen ob alle Textboxen UND Frames ausgewählt bzw. befüllt worden sind.
Falls nicht soll es entsprechen den User mit einer MsgBox warnen.
Das mit dem MsgBox ist zwar kein Problem jedoch tüftele ich seit gestern daran rum, wo ich den Code dafür einsetzen soll?
Habe einige Codes dafür gefunden jedoch hat absolut keiner von denen funktioniert, weil es ich wahrscheinlich an die falsche Stelle positioniere.
1. Frage: Kommt der Code unter dem "Eingabebutton" oder unter Initialize?
2. Frage: Kann man für das eine Vorhaben, überprüfen von "Textboxen+Frames", in ein Code zusammenfassen?
3. Frage: Wieso funktionieren diese beiden Codes nicht, wenn man Sie untereinander schreibt?
If Me.Frame1.ActiveControl Is Nothing Then
MsgBox "Kurban Cinsi bildirilmedi."
Exit Sub
End If
If Me.Frame2.ActiveControl Is Nothing Then
MsgBox "Vekalet bildirilmedi."
Exit Sub
End If
----
If TextBox_AAA.Text "" _
And TextBox_BBB.Text "" _
And TextBox_CCC..Text "" _
And TextBox_DDD.Text "" _
And TextBox_EEE.Text "" _
Then
MsgBox "Bitte leere Felder befüllen."
End If
Es darf keinesfalls etwas in die Tabelle eingetragen werden, wenn ein Textbox leer ist oder ein Frame nicht ausgewählt worden ist, auch wenn der User auf den "Eingabebutton" klickt.
Hoffe ich konnte es verständlich genug rüberbringen.
Danke für alle Hinweise.
Anbei das Bild.
Userbild
VG,
Memo

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 19:34:49
Hajo_Zi
Du bist im falschen Forum. Bildbearbeitung ist ein anderes.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Ich baue keine Datei nach, die Zeit hat schon jemand investiert.
Schau mal hier
Eine hochgeladene Arbeitsmappe erhöht die Wahrscheinlichkeit, dass Du eine Lösung für Dein Problem erhältst.
Erstelle folglich bitte eine Demomappe, aus der deine Aufgabenstellung klar erkennbar ist und lade diese hoch.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Falls Du den Download des Forums nicht benutzen möchtest beachte bitte: von unsicheren Servern file-upload lade ich keine Datei herunter (lt. Einschätzung meines Virenprogramms)
Das ist nur meine Meinung zu dem Thema.

Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 19:55:14
Memo
Hi Hajo,
danke für dein Beitrag.
VG
Memo
AW: Textboxen und Frames in Userform
10.06.2020 20:11:28
Memo
Hi Hajo,
danke für dein Beitrag :).
VG
Memo
AW: Textboxen und Frames in Userform
10.06.2020 20:15:52
Hajo_Zi
bei Danke muss der Beitrag nicht als offen gekennzeichnet werden.
Gruß Hajo
AW: Textboxen und Frames in Userform
10.06.2020 20:10:01
Mullit
Hallo,
probier mal so, für Deinen Speicher-Button:
Option Explicit

Private Sub CommandButton1_Click()
Dim objControl1 As MSForms.Control, objControl2 As MSForms.Control
For Each objControl1 In Controls
    If TypeOf objControl1 Is MSForms.TextBox Then
       If objControl1.Value = vbNullString Then Exit For
    ElseIf TypeOf objControl1 Is MSForms.Frame Then
       For Each objControl2 In objControl1.Controls
            If TypeOf objControl2 Is MSForms.OptionButton Then _
                 If objControl2.Value Then Exit For
       Next
       If objControl2 Is Nothing Then Exit For
    End If
Next
If Not objControl1 Is Nothing Then Call MsgBox("Es sind  noch nicht alle Felder gefüllt, " & _
   "oder Buttons ausgew....", vbExclamation)
Set objControl2 = Nothing
Set objControl1 = Nothing
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

Gruß, Mullit
Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 20:29:45
Memo
Hi Mullit,
super Danke für deine Unterstützung.
Dein Code funktioniert super bis das, wenn ich auf den Speicherbutton klicke, bekomme ich zwar die MsgBox jedoch wird trotzdem paar Textboxen wo ich etwas eingetippt habe, in die Liste eingetragen.
Kann man das verhindern, sodass er nix einträgt solange alles fully ausgefüllt sind?
Ansonsten funktioniert es tadellos.
Grüße
Memo
AW: Textboxen und Frames in Userform
10.06.2020 20:44:07
Mullit
Hallo,
war erst Luftcode,aber habs grad mal getestet, genau das macht der Code, Du mußt selbst die Zell-Eintragungen erst im Else-Teil der If-Anw. setzen, nicht vorher, da müsstest Du eben mal selber ran...
Gruß, Mullit
Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 20:54:15
Memo
Hi Mullit,
werde ich machen, besten Dank für deine Mühe.
Grüße,
Memo
AW: Textboxen und Frames in Userform
10.06.2020 20:57:09
Marco
Bei den Textboxen könnte das hier dir helfen:
If TextBox_Neubaugebiet.Value = "" Or TextBox_Plural.Value = "" Or TextBox_Ortsnetz.Value = "" Or TextBox_Asb.Value = "" Or TextBox_Bemerkung.Value = "" Then
MsgBox "Bitte alles ausfüllen!", vbCritical, "Eingabefehler": Exit Sub
End If
Musst du nur auf deine Bedürnisse anpassen
AW: Textboxen und Frames in Userform
10.06.2020 21:12:10
Memo
Servus Marco,
darf ich dann dasselbe auch für die Frames verwenden, also so:
If Frame1.Value = "" Or Frame2.Value = "" Then
MsgBox "Bitte Frames ausfüllen!", vbCritical, "Eingabefehler": Exit Sub
End If
Also bei den Frames muss 1. je Frame ausgewählt werden.
Danke für den Tipp.
VG
Memo
Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 21:20:02
Marco
Frames kannst du eh nicht auswählen wenn dann die OptionsButton:
If OptionButton1.Value = False AND OptionButton2.Value = False then
MsgBox "Bitte Frames auswählen!", vbCritical, "Eingabefehler": Exit Sub
End If
und das gleiche für den zweiten frame:
If OptionButton3.Value = False AND OptionButton4.Value = False then
MsgBox "Bitte Frames auswählen!", vbCritical, "Eingabefehler": Exit Sub
End If
BItte wieder auf deine Bedürfnisse anpassen
AW: Textboxen und Frames in Userform
10.06.2020 21:42:42
Memo
Hi Marco, klappt genauso wie bei Mullit's Code, jedoch trägt auch deiner nach Ausgabe der MsgBox die Werte in die Liste ein, anstatt die Userform weiterhin aktiv zu halten damit der User die fehlenden Textbox oder Optionbutton füllen kann.
Dennoch danke, wieder mal was gelernt wie es anders geht.
Grüße
Memo
Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 21:49:42
Mullit
Hallo,
Du kommst glaub ich noch nich so ganz klar was ;-), die Ausgabe muß zwingend im Else-Teil der If-Anw. gesetzt werden, nicht unterhalb der MsgBox im If-Teil...eben mal gucken....:
'...
If Not objControl1 Is Nothing Then
Call MsgBox("Es sind  noch nicht alle Felder gefüllt, " & _
"oder Buttons ausgew....", vbExclamation)
Else
'// Hier Deine Ausgabe in die Tabelle....!!!!
End If
'...

Gruß, Mullit
AW: Textboxen und Frames in Userform
10.06.2020 21:49:54
Werner
Hallo,
deine Antwort bringt hier keinen, also auch dich nicht weiter.
Kein Mensch weiß, wie dein Code für deinen Commandbutton jetzt aktuell aussieht.
Zeig doch mal wenigstens den Code deines Commandbuttons, so wie du ihn jetzt mit den eingearbeiteten Vorschlägen hast.
Gruß Werner
Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 22:25:21
Memo
Hi Werner, Hi Mullit,
ja leider, ich stehe aufm Schlauch wie Mullit erkannt.
Werner so sieht nun mein VBA Salat aus :(
Private Sub Button_Eingabe_Click()
'Erste Freie Zeile ausfindig machen
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
Unload Me
'Variable definieren
Dim Spalte As Integer
Dim StartWert As Integer
Dim StartZeile As Integer
Dim i As Integer
Spalte = 1
StartWert = 1
StartZeile = 1
'Position
Cells(last, 1).Value = TextBox_Position
TextBox_Position = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1 - 10
'A
Cells(last, 2).Value = TextBox_AAA
'B
Cells(last, 3).Value = TextBox_BBB
'C
Cells(last, 4).Value = TextBox_CCC
'D
Cells(last, 5).Value = TextBox_DDD
'bezahlt
Cells(last, 7).Value = TextBox_EEE
Cells(last, 7).NumberFormat = "#,0.00 €"
'1.+ 2. Frame
If OptionButton1.Value = True Then Cells(last, 6).Value = "V1"
If OptionButton2.Value = True Then Cells(last, 6).Value = "V2"
If OptionButton3.Value = True Then Cells(last, 10).Value = "Ja"
If OptionButton4.Value = True Then Cells(last, 10).Value = "Nein"
If TextBox_AAA.Value = "" Or TextBox_BBB.Value = "" Or TextBox_CCC.Value = "" Or TextBox_DDD. _
Value = "" Or TextBox_EEE.Value = "" Or TextBox_FFF.Value = "" Or TextBox_GGG.Value = "" Then
MsgBox "Bitte alles ausfüllen!", vbCritical, "Eingabefehler": Exit Sub
End If
If OptionButton1.Value = False And OptionButton2.Value = False Then
MsgBox "V1 oder V2 ?!", vbCritical, "Eingabefehler": Exit Sub
End If
If OptionButton3.Value = False And OptionButton4.Value = False Then
MsgBox "Ja oder Nein?", vbCritical, "Eingabefehler": Exit Sub
End If
'K2
Cells(last, 8).Value = TextBox_K2
'K3
Cells(last, 9).Value = TextBox_K3
End Sub

Private Sub CommandButton1_Click()
Dim objControl1 As MSForms.Control, objControl2 As MSForms.Control
For Each objControl1 In Controls
If TypeOf objControl1 Is MSForms.TextBox Then
If objControl1.Value = vbNullString Then Exit For
ElseIf TypeOf objControl1 Is MSForms.Frame Then
For Each objControl2 In objControl1.Controls
If TypeOf objControl2 Is MSForms.OptionButton Then _
If objControl2.Value Then Exit For
Next
If objControl2 Is Nothing Then Exit For
End If
Next
If Not objControl1 Is Nothing Then Call MsgBox("Füll doch alles aus, " & _
"die Buttons nicht vergessen!", vbExclamation)
Set objControl2 = Nothing
Set objControl1 = Nothing
End Sub
TextBox_AAA.Text = ""
TextBox_BBB.Text = ""
TextBox_CCC.Text = ""
TextBox_DDD.Text = ""
TextBox_EEE.Text = ""
TextBox_K2.Text = ""
TextBox_K3.Text = ""
OptionButton1.Value = ""
OptionButton2.Value = ""
OptionButton3.Value = ""
OptionButton4.Value = ""
End Sub
Private Sub Frame1_Click()
End Sub

Private Sub TextBox_AAA_Change()
End Sub

Private Sub TextBox_K2_Change()
End Sub

Private Sub TextBox_XXX_Change()
End Sub

Private Sub TextBox_Position_Change()
End Sub
Private Sub TextBox1_Change()
End Sub

Sorry, habe erst nur Basiskenntnisse.
Danke für Eure Hilfsbereitschaft.
VG
Memo
Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 22:37:23
Marco
Probier es mal so. Ich gebe nur keine Garantie weil ich selbst noch nicht erfahren bin. Aber bei meinem Code funktioniert es. Hab mir nämlich was sehr ähnliches gebastelt
Private Sub Button_Eingabe_Click()
'Erste Freie Zeile ausfindig machen
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
If TextBox_AAA.Value = "" Or TextBox_BBB.Value = "" Or TextBox_CCC.Value = "" Or TextBox_DDD. _
Value = "" Or TextBox_EEE.Value = "" Or TextBox_FFF.Value = "" Or TextBox_GGG.Value = "" Then
MsgBox "Bitte alles ausfüllen!", vbCritical, "Eingabefehler": Exit Sub
End If
If OptionButton1.Value = False And OptionButton2.Value = False Then
MsgBox "V1 oder V2 ?!", vbCritical, "Eingabefehler": Exit Sub
End If
If OptionButton3.Value = False And OptionButton4.Value = False Then
MsgBox "Ja oder Nein?", vbCritical, "Eingabefehler": Exit Sub
End If
With Worksheets("Gesamt")
'A
.Cells(last, 2).Value = TextBox_AAA
'B
.Cells(last, 3).Value = TextBox_BBB
'C
.Cells(last, 4).Value = TextBox_CCC
'D
.Cells(last, 5).Value = TextBox_DDD
'bezahlt
.Cells(last, 7).Value = TextBox_EEE
.Cells(last, 7).NumberFormat = "#,0.00 €"
'1.+ 2. Frame
If OptionButton1.Value = True Then .Cells(last, 6).Value = "V1"
If OptionButton2.Value = True Then .Cells(last, 6).Value = "V2"
If OptionButton3.Value = True Then .Cells(last, 10).Value = "Ja"
If OptionButton4.Value = True Then .Cells(last, 10).Value = "Nein"
'K2
.Cells(last, 8).Value = TextBox_K2
'K3
.Cells(last, 9).Value = TextBox_K3
End With
End Sub
Unload Me

Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 22:39:53
Marco
kleiner Fehler eingeschlichen
Muss so am Ende sein:

Unload Me
End Sub

AW: Textboxen und Frames in Userform
11.06.2020 02:21:51
Memo
Hallo zusammen,
habe es hinbekommen, solch ein Fehler unterläuft mir kein zweites Mal.
Besten Dank an Mullit, Marco, Werner für eure Hilfsbereitschaft.
Hajo bei dir hab ich mich ja schon im Voraus bedankt :).
VG,
Memo
AW: Textboxen und Frames in Userform
10.06.2020 22:28:16
Marco
Also der Code sollte so wie ich dir den geschrieben haben funktionieren. Hab es selbst bei mir getestet.
Du musst nur drauf achten in welcher Reihenfolge du es legst. Der Code wird von oben nach unten abgespielt. Und du möchtest ja das zu erst geprüft wird bevor was in die Zellen geschrieben werden soll. Das heisst du musst die If Abfragen sei es von den Textboxen oder der Optionbuttons an erster Stelle setzen und dann darunter den restlichen Code für die Eingabe in die Zellen.
Der Code von Mullit's funktioniert ebenfalls.Ist nur anders geschrieben
Anzeige
AW: Textboxen und Frames in Userform
10.06.2020 22:38:04
Memo
Habe ich auch gemacht, das hat auch Mullit gesagt, jedoch wenn ich das so mache dann bekomme ich immer dieselbe Fehlermeldung:
Fehler bei Kompilieren:
Nach End Sub , End Function oder End Property können nur Kommentare stehen.
Nach dieser Fehlermeldung lösche ich dann logischerweise End Sub und setze es ganz am Ende.
Aber die Fehlermeldung kommt immer noch.
So z.b. gehts nicht obwohl Ihr das ja so meint:
Private Sub Button_Eingabe_Click()
Dim objControl1 As MSForms.Control, objControl2 As MSForms.Control
For Each objControl1 In Controls
If TypeOf objControl1 Is MSForms.TextBox Then
If objControl1.Value = vbNullString Then Exit For
ElseIf TypeOf objControl1 Is MSForms.Frame Then
For Each objControl2 In objControl1.Controls
If TypeOf objControl2 Is MSForms.OptionButton Then _
If objControl2.Value Then Exit For
Next
If objControl2 Is Nothing Then Exit For
End If
Next
If Not objControl1 Is Nothing Then Call MsgBox("Es sind  noch nicht alle Felder gefüllt, " & _
"oder Buttons ausgewält", vbExclamation)
Set objControl2 = Nothing
Set objControl1 = Nothing
End Sub

'Erste Freie Zeile ausfindig machen
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
Unload Me
'Variable definieren
Dim Spalte As Integer
Dim StartWert As Integer
Dim StartZeile As Integer
Dim i As Integer
Spalte = 1
StartWert = 1
StartZeile = 1
...usw
AW: Textboxen und Frames in Userform
11.06.2020 10:56:02
ralf_b
na eigentlich steht da ja nicht das du end sub usw löschen sollst.
der compiler sagt das etwas hinter diesen texten steht was da nicht hingehört oder eben nicht als Kommentar gekennzeichnet ist. schau doch mal genau hin.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige