• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

controleren of de zichtbare textboxen en comboboxen zijn ingevuld

Status
Niet open voor verdere reacties.

ewh

Gebruiker
Lid geworden
7 jul 2010
Berichten
273
ik heb deze code via dit forum kunnen vinden en werkt normaal prima
Private Sub CommandButton1_Click()
Dim ctl_Cont As Control

For Each ctl_Cont In Me.Controls
If TypeName(ctl_Cont) = "TextBox" Or TypeName(ctl_Cont) = "ComboBox" Then
If ctl_Cont.Value = "" Then
MsgBox "De " & TypeName(ctl_Cont) & Space(1) & ctl_Cont.Name & " is niet ingevuld!"
End If
End If
Next

End Sub

in ons geval hebben we een userform1 met verschillende text en comboboxen die door commandbuttons zichtbaar gemaakt worden of niet
bv er zijn 20 textboxen ,maar bij een bepaald onder werp hoef de gebruiker er maar 5 in te vullen .

wij willen graag dat de controle plaatst vindt op alle zichtbare textboxen en comboboxen , kan dat ???
 
Zoals uitgelegd zou dit het antwoord kunnen zijn.
Code:
if [COLOR=#3E3E3E]ctl_Cont.visible and [/COLOR][COLOR=#3E3E3E]ctl_Cont<>"" then[/COLOR]
 
na wat proberen ,( waar ik de code van HSV moest plaatsen ) zag ik dat ik niet duidelijk geweest ben.

in de userform1 staan twee textboxen en "frame1" met een aantal textboxen en comboboxen ( deze zijn altijd zichtbaar )
en een een 7 tal textboxen en comboboxen staan in "frame2" ( dit frame2 wordt egaktiveerd door gebruiker)

nu blijkt dat als "frame2" niet geaktiveerd wordt ( dus we zien ze niet) de code wel naar de textboxen en comboboxen kijkt, die in de verborgen "frame2"zitten.

is daar een oplossing voor ?

ik hoop het echt
 
Laatst bewerkt:
Code:
dim ctrl as control
for each ctrl in frame2.controls
 if ctrl = "" then.....
next ctrl

Die zullen wel leeg zijn dunkt me, ze zijn immers niet zichtbaar geweest.
 
hsv klopt dat ze leeg zijn, immers frame2 was not visible , dus ook de rest van de text en comboboxen ook niet
niet.
en daar ligt nu net me probleempje.
alleen de textboxen en comboboxen die op het scherm zichtbaar zijn, moeten gecontroleerd worden , voordat er een formulier gemaakt wordt om op te slaan of te mailen.

heb jij een idee hoe we dat kunnen doen?
 
een voorbeeld bestand plaatsen is nog al een klus omdat de gegevens nog al gevoelig ligegn , dus moet ik hem bijna opnieuw bouwen .
toch nog een keer de vraag
we hebben een userform1 gemaakt met 2 textboxen en 1 combobox, tevens een frame 1 met 7 textboxen en 1 combobox

dmv van 8 keuze buttons kan frame 2 worden zichtbaar gemaakt en afhankelijk van de keuze zijn de in te vullen textboxen en comboboxen zichtbaar

voordat we de gegevens gaan opslaan moet de gebruiker zeker weten dat alle vragen ( van de zichtbare textboxen en comboboxen) zijn ingevuld.


de code die ik eerder heb mogen ontvangen controleerd alle boxen ook al zijn ze "not visible " dus de regel tussen gezet
Code:
If ctl_Cont.Visible And ctl_Cont <> "" Then


Code:
Dim ctl_Cont As Control

For Each ctl_Cont In UserForm1.Frame1.Frame2.Controls
If ctl_Cont.Visible And ctl_Cont <> "" Then
If TypeName(ctl_Cont) = "TextBox" Or TypeName(ctl_Cont) = "ComboBox" Then
If ctl_Cont.Value = "" Then

MsgBox "niet alle gegevens voor een juiste aanvraag zijn ingevuld!"
End If
End If

Next

End Sub

nu krijg ik de fout Next zonder for

echt nog even hulp nodig
 
Er moet sowieso een 'End if' tussen.
 
stom , ha ik kunnen weten , nu toegevoed maar krijg nu een foutmelding op
Code:
For Each ctl_Cont In UserForm1.Frame1.Frame2.Controls


immers ik moet controleren in userform1 , frame1 en frame2
 
Laatst bewerkt:
HSV , stom daar bedoel ik mee dat End If er bij gezet moest worden.

weet jij misschien een oplossing voor me ?
 
Laatst bewerkt:
Met stom bedoelde ik 'frame1.frame2.controls'.

In je formulier met commandbutton.
Code:
Private Sub CommandButton1_Click()
Dim fr As Control, ctrl As Control
For Each fr In Controls
  If TypeName(fr) = "Frame" And fr.Visible Then
     For Each ctrl In fr.Controls
      If ctrl = "" Then MsgBox ctrl.Name
     Next ctrl
  End If
 Next fr
End Sub

of:
Code:
Private Sub CommandButton1_Click()
Dim ctrl As Control, j as long
For j = 1 To 2
  If me("frame" & j).Visible Then
     For Each ctrl In Me("Frame" & j).Controls
      If ctrl = "" Then MsgBox ctrl.Name
     Next ctrl
  End If
 Next j
End Sub
 
Laatst bewerkt:
ik heb de laatste code toegepast en werkt voor frame1
maar in de userform1 staan ook textboxen en comboboxen , als die niet zijn ingevuld controleerd hij die niet

wat frame 2 betreft als die ook is geactiveerd blijkt dat alle textboxen en comboboxen in frame 2 ( of ze nu zichtbaar zijn of niet ) gecontroleerd worden.

kan je svp nog eens kijken
 
In welk bestand wil je me laten kijken.

Wat frame 2 betreft:

Als die niet zichtbaar is, zijn de text- en comboboxes die zich daarop bevinden ook niet.
 
Laatst bewerkt:
Code:
Wat frame 2 betreft:

Als die niet zichtbaar is, zijn de text- en comboboxes die zich daarop bevinden ook niet.

dat klopt en werkt ook je code

maar als frame 2 ook geactiveerd wordt,( in 50% van de gevallen zal dat zo zijn ) mag hij daarin alleen de zichtbare text en comboboxen nakijken.
 
Ik heb het niet getest, maar een van de twee zal het vast doen.

Code:
Private Sub CommandButton1_Click()
Dim ctrl As Control, j as long
For j = 1 To 2
  If me("frame" & j).Visible Then
     For Each ctrl In Me("Frame" & j).Controls
      If ctrl.visible and ctrl = "" Then MsgBox ctrl.Name
     Next ctrl
  End If
 Next j
End Sub

of:
Code:
Private Sub CommandButton1_Click()
Dim ctrl As Control, j as long
For j = 1 To 2
  If me("frame" & j).Visible Then
     For Each ctrl In Me("Frame" & j).Controls
      If ctrl.visible then
        if ctrl = "" Then MsgBox ctrl.Name
      end if
     Next ctrl

  End If
 Next j
End Sub
 
als de Msgbox wordt weg geklikt door gebruiker gelijk naar het einde van de code gaan

tja toch nog een vraagje
deze code heb ik onder een commandbutton geplaatst

Code:
Private Sub CommandButton10_Click()
Controle
'data opslaan bij aanvraag formulier
    Sheets("aanvraag formulier").Select
    beveiliginguit
Range("C10").Value = UserForm1.TextBox1.Value
Range("C12").Value = UserForm1.TextBox2.Value
Range("C16").Value = UserForm1.TextBox10.Value
Range("C18").Value = UserForm1.TextBox3.Value
Range("C20").Value = UserForm1.TextBox5.Value
Range("C22").Value = UserForm1.TextBox4.Value
Range("C24").Value = UserForm1.TextBox6.Value
Range("C26").Value = UserForm1.TextBox7.Value
Range("C28").Value = UserForm1.TextBox11.Value
Range("E10").Value = UserForm1.TextBox9.Value
'Range("E12").Value = UserForm1.TextBox1.Value
Range("E14").Value = UserForm1.TextBox14.Value
Range("E16").Value = UserForm1.ComboBox5.Value
Range("E18").Value = UserForm1.TextBox15.Value
Range("E20").Value = UserForm1.ComboBox3.Value
Range("E22").Value = UserForm1.ComboBox4.Value
Range("E24").Value = UserForm1.ComboBox53.Value
Range("E26").Value = UserForm1.ComboBox53.Value
Range("E28").Value = UserForm1.ComboBox55.Value
Range("C30").Value = UserForm1.ComboBox54.Value
Range("C10").Value = UserForm1.TextBox1.Value
Range("E30").Value = UserForm1.ComboBox56.Value
Range("C14").Value = UserForm1.ComboBox57.Value
ActiveSheet.Shapes("text box 2").Select
        Selection.Characters.Text = UserForm1.TextBox16.Value
'Range("B32").Value = UserForm1.TextBox16.Value
Range("C7").Value = UserForm1.Label72.Caption
beveiligingaan
opslaan

End Sub

de code "controle" die ik van HSV heb gekregen doet het prima , maar als er een leegveld is gevonden verschijnt de Msgbox
als deze is verschenen en de gebruiker heeft hem weg geklikt dan moeten we gelijk naar End Sub gaan
maar nu de vraag waar zet ik dat? en is het goto End Sub

Code:
Sub Controle()
Dim ctrl As Control, j As Long
For j = 1 To 2
  If UserForm1("frame" & j).Visible Then
     For Each ctrl In UserForm1("Frame" & j).Controls
      If ctrl.Visible And ctrl = "" Then
      MsgBox "niet alle gegevens voor een juiste aanvraag zijn ingevuld!"
     End If
     Next ctrl
  End If
 Next j
End Sub
 
Code:
If ctrl.Visible And ctrl = "" Then
      MsgBox "niet alle gegevens voor een juiste aanvraag zijn ingevuld!"
[COLOR=#0000ff]exit sub[/COLOR]

     End If
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan