Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Textboxe und Comboboxe prüfen
#1
Hallo liebe Excelgemeinde,


habe schone wieder eine Frage Smile

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
to top
#2
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
to top
#3
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
to top
#4
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
[-] Folgende(r) 2 Benutzer sagen Danke an Kuwer für diesen Beitrag:
cysu11, Wilfried Höttl
to top
#5
Hallo Uwe,


habe es hinbekommen!


Vielen lieben Dank Smile
LG
Alexandra
to top
#6
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
to top
#7
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 Benutzer sagt Danke an Kuwer für diesen Beitrag:
cysu11
to top
#8
Hallo Uwe,


oh Mann, so einfach?!
Jetzt funktioniert es natürlich!! Smile


Vielen lieben Dank
LG
Alexandra
to top
#9
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
to top
#10
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

Excel 2007
[-] Folgende(r) 1 Benutzer sagt Danke an atilla für diesen Beitrag:
cysu11
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Zellen prüfen und dann addieren h76469 1 54 05.11.2016, 08:53
Letzter Beitrag: WillWissen
  Exceltabelle auf bestimmte Wörter prüfen Frederik 1 51 03.11.2016, 18:55
Letzter Beitrag: steve1da
  Prüfen ob eine Applikation geöffnet ist oder nicht jovicic 14 714 06.07.2016, 14:42
Letzter Beitrag: RPP63
  Werte prüfen und in anderer Spalte ausgeben sasipo 1 276 30.05.2016, 06:14
Letzter Beitrag: WillWissen
  Checkboxen auf Übereinstimmung prüfen / bed. Formatierung Ratsuchender 19 750 27.04.2016, 10:07
Letzter Beitrag: Ratsuchender
  WIe kann ich bei if 2 Bedingungen prüfen je_83 3 393 24.04.2016, 08:55
Letzter Beitrag: je_83
Sad VERGLEICH-Funktion oder Zwei Werte derselben Spalte auf Unterschied prüfen Jaylan 6 592 01.02.2016, 16:10
Letzter Beitrag: Jockel
  Anzahl von Zeichen hinter einem Komma prüfen MacxselOS 3 624 10.10.2015, 20:26
Letzter Beitrag: MacxselOS
  Prüfen ob Datei offen im Netzwerk Heinz Ulm 6 1.714 27.09.2015, 15:48
Letzter Beitrag: schauan
  Prüfen ob ein Element in Liste ist innerhalb einer WENN-Funktion kruesae 16 2.836 07.07.2015, 19:51
Letzter Beitrag: kruesae

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste