Naja habe gestern irgendwas geändert und ist ja auch nur Spielerei. Aber wie kann das sein? Also meinst du der Code an sich funktioniert, wenn uvb die UserForm1 einfach neu anlege?
Also es geht nun soweit ich es sehe. Nur das mit dem Fokus klappt nicht.
Was ich nun nicht verstehe ist das mit der Formel. Ich gebe im Textfeld "Prüfintervall" eine Zahl ein "x". Die Formel lautet dann 100/"x". Nun soll daraus ein Strang mit Text gebaut werden, sodass dann steht "Ergebnis" %, jedes "x". Teil.
Wenn außerdem die Userform initialisiert wird, möchte ich hier nicht den ganzen Text der Zeile sondern nur die Zahl "x" anzeigen lassen. Ich weiß gar nicht, wie ich das erklären soll und ob sowas überhaupt möglich ist.
ich habe nun doch einiges irgendwie hinbekommen. Ich mache das Ganze Zuhause und privat und werde auch nicht dafür bezahlt. Ich hoffe ich bekomme ein Danke, aber selbst das ist fraglich. Warum ich das immer für alle Arbeitgeber mache, weiß ich nicht. In diesem Fall habe ich aber auch keine andere Wahl, etwas zu machen, was brauchbar ist. Denn mein Ex-Vorgesetzter hatte ein Dokument, was neu erstellt werden musste, da er das Kennwort nicht herausgegeben hat. Und ich soll zu den ganzen Aufgaben entsprechend etwas machen, damit wir wieder arbeiten können.
Vielleicht wird das ja irgendwann mal erkannt, dass ich nicht aufgebe und es wert bin. Aber wahrscheinlich ist das nur Wunschdenken.
Dadurch, dass ich zuletzt keine Antworten hier erhalten habe, konnte ich die letzten Teile eigentlich doch irgendwie lösen, vor allem das mit der Formel. Aber ich bin jetzt zu doof für Google oder verstehe nichts mehr.
Ich habe folgendes Szenario: In einer Userform sollen nun alle Textboxen geprüft werden, ob sie gefüllt sind. Wenn mindestens eine Textbox leer ist, soll eine Messagebox vbOkCancel mit einem definierten Text erscheinen. Wenn nun aber alle Textboxen ausgefüllt sind dann soll eine andere Messagebox mit vbOkCancel geöffnet werden (bzw. mit einem anderen Text).
Aber beim Klick auf OK oder Abbrechen soll bei beiden Boxen der gleiche Code wieder ablaufen. Das heißt, nur die Texte der Boxen sind unterschiedlich. Irgendwie habe ich was mit einer FOR-Schleife gefunden, aber da waren dann immer nur eine Messagebox angegeben. Und den Code kriege ich nun gar nicht ans Laufen.
Ich wäre wirklich sehr dankbar, wenn mir hier geholfen werden könnte: Wie prüfe ich Textboxen und wie erreiche ich, dass bei unterschiedlichen Zuständen (alle gefüllt/mindestens eine leer), dann die Messagebox1 oder Messagebox2 angezeigt wird? Um dann abschließend den gleichen Code fortzusetzen?
Geht das überhaupt? Ich wäre wirklich sehr dankbar.
12.08.2020, 22:41 (Dieser Beitrag wurde zuletzt bearbeitet: 12.08.2020, 23:15 von Kuwer.)
Hallo,
Private Sub CommandButton1_Click() Dim bolText As Boolean Dim oControl As Control For Each oControl In Me.Controls If TypeName(oControl) = "TextBox" Then bolText = Len(oControl) If Not bolText Then Exit For End If Next oControl If bolText Then MsgBox "Messagebox1" Else MsgBox "Messagebox2" End If End Sub
Wow do schnell, danke. Ich probiere das aus. Bisher hahe ich die Message oxen ja noch definiert. Dim msg1= und dim msg2 = vbokcsncel, Vbexclamation z. B. Geht das damit auch?
Und wo kommt dann der Code hin den ich dann mit klick auf vbok der beiden Boxen ausführen will? Mit diesen For Schleifen hatte ich noch nie Kontakt das wird für mich wohl dauern, bis ich die richtig verstanden habe...
Private Sub CommandButton1_Click() Dim bolText As Boolean Dim oControl As Control For Each oControl In Me.Controls If TypeName(oControl) = "TextBox" Then bolText = Len(oControl) If Not bolText Then Exit For End If Next oControl If bolText Then If MsgBox("Messagebox1", vbYesNo + vbQuestion) = vbYes Then CodeBeiKeineLeer End If Else If MsgBox("Messagebox2", vbYesNo + vbQuestion) = vbYes Then CodeBeiLeer End If End If End Sub
Sub CodeBeiLeer() MsgBox "Mindestens eine TextBox ist leer" End Sub
Sub CodeBeiKeineLeer() MsgBox "Keine TextBox ist leer" End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • ToXiC
Pfff. Für mich ist das schon alles schwer. Es unterscheiden sich bei mir nur die Texte der MessageBoxen, der Code solll aber bei beiden dann der gleiche sein. Und muss ich dann call Code bei keine leer machen?
OK, bin müde, ich komme morgen vielleicht dazu mir das anzusehen. Ich glaube über meine Codierung lacht ihr sowieso. So schlecht wie ich das mache, auch wenn das dann irgendwie funktioniert...
ich habe das ausprobiert aber blicke nicht ganz durch. Zumindest funktioniert nun, dass mir je nach Zustand die richtigen Messages angezeigt werden. Aber der weitere Code, dass dann die Übernahme in die entsprechenden Zellen stattfindet.
Ich verstehe nun auch nicht, warum ich weitere Subs mit gleichem Textinhalt erstellen musste. Ich bin heute sowieso eben der Spur. Aber wäre nett, wenn man sich folgenden Code ansehen könnte damit ich den Denkfehler verstehe...
Code:
Private Sub inspectionlot() Application.ScreenUpdating = False Dim Interval As String Dim result As Integer result = Range("BA10").Value * (CDbl(TextBox_Interval.Value) / 100) If TextBox_Interval.Value = "" Then Exit Sub If TextBox_Interval.Value < 100 Then Interval = "Prüfintervall " & TextBox_Interval.Value & "%, jedes " & CVar(result) & ". Teil." ElseIf TextBox_Interval.Value = 100 Then Interval = "Prüfintervall " & TextBox_Interval.Value & "%, jedes Teil." End If Range("B41:BH41").Select ActiveCell.Value = CVar(Interval) Range("A1").Select Application.ScreenUpdating = True End Sub
Sub notallcompleted() MsgBox "Es wurden nicht alle Eingaben gemacht." & Chr(13) & "Mit OK werden alle Eingaben und leere Textfelder übernommen!" ActiveSheet.Range("B3") = TextBox_Customer.Value ActiveSheet.Range("BA6") = TextBox_Date.Value ActiveSheet.Range("BF6") = TextBox_Version.Value ActiveSheet.Range("L7") = TextBox_PartNo.Value ActiveSheet.Range("AG7") = TextBox_JobNo.Value ActiveSheet.Range("BA7") = TextBox_TestplanNo.Value ActiveSheet.Range("L9") = TextBox_DrawingNo.Value ActiveSheet.Range("AD9") = TextBox_Index.Value ActiveSheet.Range("AR9") = TextBox_PartName.Value ActiveSheet.Range("L10") = TextBox_OrderNo.Value ActiveSheet.Range("AG10") = TextBox_CommissionNo.Value ActiveSheet.Range("BA10") = TextBox_Pieces.Value ActiveSheet.Range("L11") = TextBox_Operation.Value ActiveSheet.Range("AR11") = TextBox_Machine.Value ActiveSheet.Range("L12") = TextBox_Material.Value ActiveSheet.Range("BJ1") = TextBox_Interval.Value 'ActiveSheet.Range("BA5") = TextBox_Creator.Value Call inspectionlot End Sub
Private Sub CMD_Apply_Click() If TextBox_Interval.Value = "" Then Range("B41:BH41").ClearContents If TextBox_Interval.Value = "" Then End If Dim bolText As Boolean Dim oControl As Control For Each oControl In Me.Controls If TypeName(oControl) = "TextBox" Then bolText = Len(oControl) If Not bolText Then Exit For End If Next oControl If bolText Then If MsgBox("Mit OK werden alle Eingaben übernommen." & vbCrLf & "Vorhandener Inhalt wird überschrieben!", vbOKCancel + vbExclamation) = vbYes Then allcompleted End If
Else If MsgBox("Es wurden nicht alle Eingaben gemacht." & vbCrLf & "Mit OK werden alle Eingaben und leere Textfelder übernommen!", vbOKCancel + vbExclamation) = vbYes Then notallcompleted End If End If
danke Dir. Ich war gerade am Rumspielen und dann habe ich durch Zufall einen Fehler bemerkt in der Reihenfolge eines anderen Subs in UserForm1 und den behoben. Dann wieder aufgebaut wie Du zuvor geschrieben hast und jetzt klappt es.
Was ich gerne wissen würde: Warum muss ich hier zum Ausrufen der Subs kein Call vorherstellen oder muss das generell nicht sein.
wenn Du den Cursor auf Call setzst und dann die Taste F1 drückst, käme dann unter anderem das:
"Das Schlüsselwort Call muß nicht unbedingt beim Aufrufen einer Prozedur verwendet werden. Wenn Sie jedoch Call verwenden, um eine Prozedur aufzurufen, die Argumente erfordert, müssen Sie die Werte für ArgListe in Klammern einschließen. Wenn Sie das Schlüsselwort Call nicht angeben, sind auch keine Klammern um ArgListe zulässig."
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • ToXiC