VBA, Excel 2007, Aanroepen van combobox, listbox of userform

Status
Niet open voor verdere reacties.

jackfish

Gebruiker
Lid geworden
10 sep 2010
Berichten
297
Ik heb, met dank aan dit forum, nu een userform dat met een combobox gegevens (datums) van een andere sheet haalt en die in textboxen op het userform plaatst. Graag zou ik zien dat de background van de textbox rood kleurt als de datum, ten opzichte van vandaag, meer dan 365 dagen telt. Ik ben zoekende naar de code. Wie kan mij helpen?
 
Plaats even je bestand, of een representatief voorbeeld bestand.
 
Prima. En over welke textbox heb je het dan? En er zitten er meer in die Userform.
Of gaat het om alle 6 onder Stand van zaken?
 
Laatst bewerkt:
Dit is een voorbeeld voor tekst2 (Informatie 1) die bij het verlaten van het veld wordt uitgevoerd:

Code:
Private Sub tekst2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If DateDiff("d", tekst2.Text, Date) > 365 Then
        tekst2.BackColor = 255
    Else
        tekst2.BackColor = 16777215
    End If
End Sub

Die kun je dan zelf wel voor de andere textboxen maken.
Overigens zou ik die textbox niet text2 noemen maar bijvoorbeeld tbInformatie1.
Maar dat terzijde ;)
 
Laatst bewerkt:
Ik kan de code niet bedenken, dus ik gooi er een uitdaging tegenaan :P : Is het mogelijk om 1 code te maken voor alle zes de textboxen?
 
Hoe je het doet maakt niet uit. Ook als je er een andere code voor verzint blijft het een routine door het exit event per textbox getriggerd moet worden. Deze code is zo kort dat het geen zin heeft om te proberen er 1 code voor alle textboxen van te maken omdat je per textbox dit nodig blijft hebben:
Code:
Private Sub tekst2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
End Sub
 
Om toch enigzins aan je vraag tegemoet te komen zou je de volgende routine in het userform kunnen maken:

Code:
Sub AchtergrondKleur(tekstbox As String)
    If DateDiff("d", Me.Controls(tekstbox).Text, Date) > 365 Then
        Me.Controls(tekstbox).BackColor = 255
    Else
        Me.Controls(tekstbox).BackColor = 16777215
    End If
End Sub

En dan per textbox dit:
Code:
Private Sub tekst2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Achtergrondkleur ("tekst2")
End Sub

Alleen om je de functionaliteit van Me.Controls te laten zien.
"Me" is in dit geval je Userform.
 
Laatst bewerkt:
Code:
sub tekst1_change()
   tekst1.backcolor=F_kleur(tekst1)
end sub

sub tekst2_change()
   tekst2.backcolor=F_kleur(tekst2)
end sub

sub tekst3_change()
   tekst3.backcolor=F_kleur(tekst3)
end sub

sub F_kleur(ct)
   F_kleur= qbcolor(12*abs(datadiff("d",ct,date)>365))
end sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan