• 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.

Textboxen zichtbaar maken na invullen Combobox

Status
Niet open voor verdere reacties.

hoogteijling

Terugkerende gebruiker
Lid geworden
12 aug 2005
Berichten
4.261
Hallo allemaal,

In bijgevoegd bestand zou ik graag willen dat de 4 textboxen pas zichtbaar worden nadat er in ComboBox1 iets gekozen is.
Ik heb al iets geprobeerd met M_check maar het lukt me niet.
Het gaat hierbij om het formulier wat te voorschijn komt nadat er op de button Bestaande Joborder aanpassen is gedrukt.

De button Maak nieuwe joborder werkt hoe het hoort.

Groeten Marcel
Bekijk bijlage Urenplanning.xlsm
 
Zo zou het kunnen: (even alles in een keer)

Code:
Private Sub UserForm_Initialize()
    With Sheets("Urenplanning")
        sq = .Range("A4:A" & .Cells(Rows.Count, 3).End(xlUp).Row)
    End With
    ComboBox1.List = sq
    
    For Each Control In Me.Controls
    If Control.Name <> "ComboBox1" Then Control.Visible = False
    Next
    
End Sub
Sub M_check()
    For Each Control In Me.Controls
    If ComboBox1.Text <> "" Then Control.Visible = True
    Next
End Sub

Maar je zou ook al de textboxen en labels in designmode op onzichtbaar kunnen zetten
 
iets compacter:

Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = Sheets("Urenplanning").Range("A4:A" & Sheets("Urenplanning").Cells(Rows.Count, 3).End(xlUp).Row)
    
    For Each Ct In Controls
       Ct.Visible =  Control.Name = "ComboBox1" 
    Next
End Sub

Sub M_check()
    For Each Ct In Controls
      Ct.Visible = ComboBox1.Text <> "" 
    Next
End Sub
 
iets completer:
Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = Application.Transpose(Sheets("Urenplanning") _
                .Range("A4:A" & Sheets("Urenplanning").Cells(Rows.Count, 3).End(xlUp).Row))
    For Each Ct In Controls
       Ct.Visible = Ct.Name = "ComboBox1"
    Next
End Sub

Private Sub ComboBox1_Change()
    M_check
End Sub

Sub M_check()
    For Each Ct In Controls
      If Not Ct.Name = "ComboBox1" Then
        Ct.Visible = ComboBox1.Text <> ""
      End If
    Next
End Sub
 
Bedankt allemaal voor het reageren :)

Alleen de code van Rudi werkt bij mij.
Wel is het textlabel verdwenen bij de combobox totdat deze wordt ingevuld.
Is hier nog iets aan te doen ?

Even vooruitlopend:
Wanneer er een projectnummer gekozen wordt zouden de textboxen ernaast ingevuld moeten worden en vervolgens aan te passen moeten zijn.

Groeten Marcel
 
Van een beetje zelf experimenteren ga je tot op heden nog niet dood.
Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = Application.Transpose(Sheets("Urenplanning") _
                .Range("A3:A" & Sheets("Urenplanning").Cells(Rows.Count, 3).End(xlUp).Row))
    For Each Ct In Controls
    If Not Ct.Name = "Label1" Then Ct.Visible = Ct.Name = "ComboBox1"
    Next
End Sub

Private Sub ComboBox1_Change()
    M_check
End Sub

Sub M_check()
    For Each Ct In Controls
      If Not Ct.Name = "ComboBox1" And Not Ct.Name = "Label1" Then Ct.Visible = ComboBox1.Text <> ""
    Next
End Sub

Wat betreft je vooruitlopende vraag, hiervan zijn er ontelbare codes te vinden op dit forum om objecten met data te vullen en deze naderhand weer weg te schrijven.
Een beetje zoeken en je kan weeral verder.
 
Laatst bewerkt:
Beschouw alle aangereikte code als suggesties die begrepen en zonodig aangepast moeten worden.
Waarom zoeken als je het zelf ook kunt bedenken ?
Deze code hieronder heb ik ook niet 'gevonden'.

Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = Sheets("Urenplanning").Range("A4:A" & Sheets("Urenplanning").Cells(Rows.Count, 3).End(xlUp).Row).value
    
    For Each Ct In Controls
       Ct.Visible =  Ct.Name = "ComboBox1" 
    Next
End Sub

Sub M_check()
    For Each Ct In Controls
      Ct.Visible = Ct.Text <> "" and Ct.name<>"ComboBox1"
    Next
End Sub
 
Laatst bewerkt:
Ik krijg het niet voor elkaar om Label1 zichtbaar te krijgen bij het openen van het formulier.
Wel is het gelukt om de overige textboxen te vullen nadat in de ComboBox 1 het nummer geselecteerd is.
(Ik heb zelf wel het idee dat de code iets korter kan, of vergis ik me)
Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = Application.Transpose(Sheets("Urenplanning") _
                .Range("A4:A" & Sheets("Urenplanning").Cells(Rows.Count, 3).End(xlUp).Row))
    For Each Ct In Controls
    If Not Ct.Name = "Label1" Then Ct.Visible = Ct.Name = "ComboBox1"
    Next
    End Sub
Private Sub ComboBox1_Change()
    M_check
    With Worksheets("Urenplanning").Range("A:E")
        Dim c
        Dim d
        Dim e
        Dim f
       c = .Find((ComboBox1.Value), LookIn:=xlValues).Offset(, 1)
       d = .Find((ComboBox1.Value), LookIn:=xlValues).Offset(, 2)
       e = .Find((ComboBox1.Value), LookIn:=xlValues).Offset(, 3)
       f = .Find((ComboBox1.Value), LookIn:=xlValues).Offset(, 4)
     TextBox1.Text = c
     TextBox2.Text = d
     TextBox3.Text = e
     TextBox4.Text = f
    End With
End Sub
Sub M_check()
    For Each Ct In Controls
      If Not Ct.Name = "ComboBox1" And Not Ct.Name = "Label1" And Not Ct.Name = Label6 Then Ct.Visible = ComboBox1.Text <> ""
    Next
End Sub

Groeten Marcel
Bekijk bijlage Urenplanning.xlsm
 
Je kan ook enable gebruiken i.p.v. visible dan is hij wel zichtbaar maar kan de gebruiker er niet in.
 
Laatst bewerkt:
TechnoMX,
Ik heb het geprobeerd maar ik krijg het niet voor elkaar.
Waar moet ik dit stukje code plaatsen/vervangen ?

Groeten Marcel
 
Ja ok, ik zie nu pas dat het over vba gaat ik schrijf daar niet in en gaf dus de tip met uitgangspunt vb.net.

Maargoed ik ga toch een poging wagen een code te fixen..

Code:
''oud
 For Each Ct In Controls
    If Not Ct.Name = "Label1" Then Ct.Visible = Ct.Name = "ComboBox1"
  Next

(al snap ik niet helemaal wat deze syntax nou eigenlijk gaat doen maar heb mijn aanpassing op basis van dit geschreven.)

Code:
''nieuw
 For Each Ct In Controls
    If Not Ct.Name = "Label1" Then 
          Ct.Enable=true 
          Ct.Name = "ComboBox1"
    End if
  Next
U dient wel even het besturingselement CT in de designer op Enable=false te zetten.

Ik weet dus niet of het werkt en of CT in VBA deze member (Enable) heeft dus ik hoor wel als het werkt!
 
Laatst bewerkt door een moderator:
Je doelt op label6?

Code:
Private Sub UserForm_Initialize()
    ComboBox1.List = Application.Transpose(Sheets("Urenplanning") _
                .Range("A4:A" & Sheets("Urenplanning").Cells(Rows.Count, 3).End(xlUp).Row))
    For Each Ct In Controls
    If Not Ct.Name = "Label1" [COLOR="#FF0000"]And Not Ct.Name = "Label6"[/COLOR] Then
    Ct.Visible = Ct.Name = "ComboBox1"
    End If
    Next
End Sub

+..rest van jouw code...
 
@TechnoMX:
In ieder geval bedankt voor het meedenken.
@Eric:
Je code werkt als een trein :)
Het ging idd om Label6.

Ik had zelf ook al wat dingen geprobeerd in die richting maar het lukte me toch niet en uiteindelijk is het erg simpel zie ik nu :o

Wat ik nu nog zou willen is dat de knop Wijzigingen doorvoeren in het formulier pas zichtbaar wordt wanneer er daadwerkelijk iets gewijzigd is in 1 van de TextBoxen1, 2, 3 of in ComboBox2 en dat de inhoud van het formulier weer teruggekoppeld wordt naar de cellen.
Code:
Private Sub UserForm_Initialize()
       For Each Ct In Controls
    If Not Ct.Name = "Label1" And Not Ct.Name = "Label6" Then Ct.Visible = Ct.Name = "ComboBox1"
        Next
    With Sheets("Urenplanning")
        pn = .Range("A4:A" & .Cells(Rows.Count, 3).End(xlUp).Row)
        With Sheets("Data")
        dp = .Range("A3:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
    End With
    End With
    ComboBox1.List = pn
    ComboBox2.List = dp
        End Sub

Private Sub ComboBox1_Change()
    M_check
    With Worksheets("Urenplanning").Range("A:E")
        Dim c
        Dim d
        Dim e
        Dim f
       c = .Find((ComboBox1.Value), LookIn:=xlValues).Offset(, 1)
       d = .Find((ComboBox1.Value), LookIn:=xlValues).Offset(, 2)
       e = .Find((ComboBox1.Value), LookIn:=xlValues).Offset(, 3)
       f = .Find((ComboBox1.Value), LookIn:=xlValues).Offset(, 4)
     TextBox1.Text = c
     TextBox2.Text = d
     TextBox3.Text = e
     ComboBox2.Text = f
    End With
End Sub

Sub M_check()
    For Each Ct In Controls
      If Not Ct.Name = "ComboBox1" And Not Ct.Name = "Label1" And Not Ct.Name = Label6 Then Ct.Visible = ComboBox1.Text <> ""
    Next
End Sub
Groeten Marcel

Bekijk bijlage 183296
 
Laatst bewerkt:
Omdat ik even op vakantie ben geweest reageer ik wat laat maar hierbij alsnog de goede bijlage.
Wat ik nu nog zou willen is dat de knop Wijzigingen doorvoeren in het formulier pas zichtbaar wordt wanneer er daadwerkelijk iets gewijzigd is in 1 van de TextBoxen1, 2, 3 of in ComboBox2 en dat de inhoud van het formulier weer teruggekoppeld wordt naar de cellen.

Groeten Marcel
Bekijk bijlage Urenplanning.xlsm
 
Laatst bewerkt:
Rudi,

1 kleinigheidje,
Is het mogelijk na het openen van het wijzigen formulier dat het textLabel1 boven de Combobox1 zichtbaar wordt ?

Verder werkt ie perfect hoor, thnx a lot :)

Groeten Marcel
 
Laatst bewerkt:
Code:
Private Sub UserForm_Initialize()
    For Each Ct In Controls
        If Not Ct.Name = "Label1" And Not Ct.Name = "Label6" And Not Ct.Name = "CommandButton1" Then Ct.Visible = Ct.Name = "ComboBox1"
    Next
    ComboBox1.List = Application.Transpose(Sheets("Urenplanning") _
                .Range("A4:A" & Sheets("Urenplanning").Cells(Rows.Count, 3).End(xlUp).Row))
    ComboBox2.List = Application.Transpose(Sheets("Data") _
                .Range("A3:A" & Sheets("Data").Cells(Rows.Count, 1).End(xlUp).Row))
End Sub

Code:
Private Sub CommandButton1_Click()
    With Worksheets("Urenplanning")
        fAddress = .Columns(1).Find((ComboBox1.Value), , xlValues).Address
        For i = 1 To 4
            .Range(fAddress).Offset(, i) = Choose(i, Format(TextBox1.Text, "mm/dd/yyyy"), TextBox2.Text, TextBox3.Text, ComboBox2.Value)
        Next
     End With
    For Each Ct In Controls
        If Not Ct.Name = "Label1" And Not Ct.Name = "Label6" Then Ct.Visible = Ct.Name = "ComboBox1"
    Next
End Sub
 
Rudi, bedankt weer he.
Volgens mij is ie nou helemaal goed. :)

Groeten Marcel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan