Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo liebe Excelgemeinde, habe schone wieder eine Frage :) Mit folgendem Code(Codeteil): Code: Dim ctrElement As Control For Each ctrElement In Me.Controls If TypeName(ctrElement) = "TextBox" Then If ctrElement.Value = "" Then MsgBox "Bitte alle Pflichtfelder ausfüllen!" ', 48 Controlsgelb ctrElement.SetFocus Exit Sub
End If End If Next
prüfe ich ob alle meine TextBoxen in meiner Userform befüllt sind! Soweit so gut! Ich möchte aber dass alle meine Textboxe und meine Comboboxen geprüft werden aber mit jeweils Ausnahmen und zwar TextBox 1,2, 57, 58, 59 und Combobox 2 und 3 sollen nicht geprüft werden! Vielen lieben Dank schon im Voraus VG Alexandra
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Alexandra, ich favorisiere für solche Sachen die "Select Case-Anweisung". Code: Dim ctrElement As Control For Each ctrElement In Me.Controls Select Case ctrElement.Name Case "TextBox1", "TextBox2", "TextBox57", "TextBox58", "TextBox59", "ComboBox2", "ComboBox3" Case Else If ctrElement.Value = "" Then MsgBox "Bitte alle Pflichtfelder ausfüllen!" ', 48 Controlsgelb ctrElement.SetFocus Exit For End If End Select Next ctrElement
Gruß Uwe
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo Uwe, vielen Dank für deine Antwort! Leider bekomme ich da immer eine Fehlermeldung! Laufzeitfehler 438! Objekt unterstützt diese Eigenschaft oder Methode nicht! Woran liegt das? Hier mein ganzer Code: Code: Private Sub cmdÄnderungenSpeichern_Click() 'Änderungen speichern Dim var Dim rngID As Range Dim sSearch As String var = MsgBox("Sind Sie sicher, dass Sie die Änderungen zum Artikel" & " " & TextBox3.Value & " " & "speichern möchten? ", vbYesNo) If var = 7 Then Exit Sub Else Dim ctrElement As Control For Each ctrElement In ArtikelDB.Controls Select Case ctrElement.Name Case "TextBox1", "TextBox2", "TextBox57", "TextBox58", "TextBox59" ', "ComboBox2", "ComboBox3" Case Else If ctrElement.Value = "" Then MsgBox "Bitte alle Pflichtfelder ausfüllen!" ', 48 Controlsgelb ctrElement.SetFocus Exit For End If End Select Next sSearch = TextBox3 'Eintrag an die Variable übergeben Set rngID = ThisWorkbook.Sheets("produkte").Columns("C:C").Find(What:=sSearch, LookAt:=xlWhole, LookIn:=xlValues) 'In Spalte A nach dem Wert in der Variable suchen und festhalten End If With ThisWorkbook.Sheets("produkte") ArtikelDB.TextBox58.Text = Environ("Username") & " " & Date & " " & Time For y = 1 To 29 .Cells(rngID.Row, y) = ArtikelDB.Controls("Textbox" & y).Value Next y For y = 30 To 33 .Cells(rngID.Row, y) = CCur(ArtikelDB.Controls("Textbox" & y)) Next y For y = 34 To 51 .Cells(rngID.Row, y) = ArtikelDB.Controls("Textbox" & y).Value Next y For y = 52 To 55 .Cells(rngID.Row, y) = CCur(ArtikelDB.Controls("Textbox" & y)) Next y For y = 56 To 58 .Cells(rngID.Row, y) = ArtikelDB.Controls("Textbox" & y).Value Next y End With Dim Datensatz As Long Application.ScreenUpdating = True Datensatz = ThisWorkbook.Sheets("produkte").Cells(Rows.Count, 3).End(xlUp).Row lstArtikel.Clear For i = 2 To Datensatz If ThisWorkbook.Sheets("produkte").Cells(i, 3).Value <> "" Then _ ArtikelDB.lstArtikel.AddItem (ThisWorkbook.Sheets("produkte").Cells(i, 3).Value) ' & " - " & (ThisWorkbook.Sheets("produkte").Cells(i, 4).Value) Next lstArtikel.Enabled = True lstArtikel.SetFocus cmdArtikelSuchen_Click MsgBox "Änderungen zum Artikel" & " " & TextBox3.Value & " " & "wurden erfolgreich gespeichert" OriginalColor ControlsOnlyView End Sub
Vielen Dank VG Alexandra
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Alexandra, Du hast leider nicht mitgeteilt, an welcher Stelle genau eine Fehlermeldung kommt. Darum ins Blaue: Code: Dim ctrElement As Control For Each ctrElement In Me.Controls If TypeName(ctrElement) = "TextBox" Or TypeName(ctrElement) = "ComboBox" Then Select Case ctrElement.Name Case "TextBox1", "TextBox2", "TextBox57", "TextBox58", "TextBox59", "ComboBox2", "ComboBox3" Case Else If ctrElement.Value = "" Then MsgBox "Bitte alle Pflichtfelder ausfüllen!" ', 48 'Controlsgelb ctrElement.SetFocus Exit For End If End Select End If Next ctrElement
Gruß Uwe
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo Uwe,
habe es hinbekommen!
Vielen lieben Dank :) LG Alexandra
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo zusammen, habe nochmals den anschließenden Code eingeschaltet und irgendwie funktioniert dieser hier nicht: Code: Sub Controlsgelb() 'Textboxen färben wenn leer beim Anlegen oder Ändern eines Datensatzes Dim ctrElement As Control For Each ctrElement In Me.Controls If TypeName(ctrElement) = "TextBox" Or TypeName(ctrElement) = "Combobox" Then If ctrElement.Value = "" Then ctrElement.BackColor = &HC0FFFF Else ctrElement.BackColor = &HE0E0E0 End If End If Next ctrElement End Sub
Es werden nur die TextBoxen gelb, aber die Comboboxen nicht!! Weiß jemand warum, was muss ich da ändern!? Vielen Dank im Voraus LG Alexandra
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Alexandra,
ohne weitere Maßnahmen ist die Groß-/Kleinschreibung zu beachten. Wenn Du ... = "ComboBox" Then schreibst, funktioniert es schon.
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
• cysu11
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo Uwe,
oh Mann, so einfach?! Jetzt funktioniert es natürlich!! :)
Vielen lieben Dank LG Alexandra
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo zusammen, noch eine Frage zu diesem Code: Code: Dim ctrElement As Control For Each ctrElement In Me.Controls If TypeName(ctrElement) = "TextBox" Or TypeName(ctrElement) = "ComboBox" Then If ctrElement.Value = "" Then Controlsgelb MsgBox "Bitte alle Pflichtfelder ausfüllen!" ctrElement.SetFocus Exit Sub End If End If Next
Hier wird jede TextBox oder Combobox geprüft! Wie müsste es aussehen, wenn TextBox 60 und TextBox 68 nicht berücksichtig werden sollen! Vielen dank VG Alexandra
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Alexandra, ok, ist ein wenig warm, deswegen kann man einiges übersehen, aber weiter oben hatte Uwe für einen solchen Fall schon eine Lösung aufgezeigt. Hier jetzt mit den gegebenen Vorgaben: Code: Sub Controlsgelb() 'Textboxen färben wenn leer beim Anlegen oder Ändern eines Datensatzes Dim ctrElement As Control For Each ctrElement In Me.Controls If TypeName(ctrElement) = "TextBox" Or TypeName(ctrElement) = "ComboBox" Then Select Case ctrElement.Name Case Is = "TextBox1", "TextBox2" Case Else If ctrElement.Value = "" Then ctrElement.BackColor = &HC0FFFF Else ctrElement.BackColor = &HE0E0E0 End If End Select End If Next ctrElement End Sub
Hallo noch mal, ich sehe gerade, dass Hajo mit Deinem Case Else wieder Probleme bekommen hat. Die Lösung für das dortige Problem ist relativ einfach. Karins Lösung ist doch sehr einfach und gut, hatte es anfangs falsch gedeutet. ist halt warm, ne..:19: So gehst auch: Du hast ein allgemeines Modul, in welchem Du eine Public Variable benennst, so z.B: Code: Option Explicit Public aktiveForm As Object
In jeder der Userformen schreibst Du im Activate Ereignis, folgendes: Zitat:Private Sub UserForm_Activate() Set aktiveForm = Me ..... Und die Ereignisse in ThisWorkbook sehen dann so aus: Code: Private Sub Workbook_WindowActivate(ByVal Wn As Window) aktiveForm.Show End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window) aktiveForm.Hide End Sub
Für alle interessierten, die Frage von Alexandra ist hier zu finden: schaut mal hier
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• cysu11
|