Meerdere velden in een formulier (o.a. kleur) aanpassen in VBA dmv 'wildcards'

Status
Niet open voor verdere reacties.

neilvv

Gebruiker
Lid geworden
27 mei 2015
Berichten
47
Graag zou ik in mijn access bestand bij het openen van een formulier, diverse velden willen aanpassen (o.a kleur).

De gebruiker kan dmv een formulier bepaalde velden een voorkeur ingeven welke kleur ze moeten zijn. Een soort thema.
Via vba lukt me dat om dit allemaal te laten werken.

Code:
Me.OK_TXTSupplier.BackColor = Val("&H" & (TempVars!varInputBoxBackColorOK))

Maar ik heb veel formulieren dus daarmee enorm veel velden!
Het lijkt me dat dit ook anders zou moeten kunnen maar kom er maar niet achter hoe.

Via een expressie zou ik willen kunnen aangeven dat alle velden die beginnen met:
'OK_TXT' de kleur krijgen die eerder is aangegeven en is opgeslagen in een TempVars
'ERROR_TXT' de kleur krijgen die in een andere TempVars staat
'BLOCK_CBO' .......... enz enz...

Heeft iemand een idee hoe dit moet of een voorbeeld?
 
Als een gebruiker altijd de kleuren verandert, en vermoedelijk dan in dezelfde, waarom sla je die gegevens dan niet op in een configuratietabel? Bij het opstarten/uitlezen van een formulier gebruik je dan die config gegevens om het formulier op te maken. Op dat config formulier laat je dan de gebruiker zelf zijn kleurtjes kiezen, en opslaan. Dat uitlezen kan simpel door die config tabel te openen met een recordset op de UserID zodat je de correcte kleuren (en wellicht talen etc) weet. En je lust dan door alle objecten op willekeurig welk formulier om dat op te maken. Daar gebruik je een functie voor. Gelukkig heb ik nog nooit te maken gehad met gebruikers die zélf aan de opmaak van mijn zorgvuldig ontworpen wilden klooien (mijn baas weet: als er ooit een minkukel zou komen met zo'n vraag dan heeft hij een probleem, want dan is het: minkukel er uit, of ik er uit ;) ), dus specifiek voor jouw probleem heb ik geen oplossing. Maar wellicht brengt deze functie die ik gebruik om een formulier leeg te maken je op het goede spoor:

Code:
Function FilterLeeg(frm As Form)
Dim qTmp As QueryDef
Dim lst As ListBox, ctl As Control, itm As Variant
    
    For Each ctl In frm.Controls
        With ctl
            Select Case .ControlType
                Case acTextBox ', acComboBox
                    If Left(.Name, 5) = "tekst" Or Left(.Name, 3) = "dat" Then
                        .Value = Null
                    End If
                Case acListBox
                    Set lst = frm(.Name)
                    For Each itm In lst.ItemsSelected
                        lst.Selected(itm) = False
                    Next itm
                    lst.RowSource = ""
                Case acComboBox
                    .Value = Null
            End Select
        End With
    Next ctl
    
End Function
 
OctaFish bedankt voor je info, ga kijken of het mij lukt om hier iets mee te doen. zou leuk zijn als dit via een 'wildcard' zou kunnen...... maar misschien wil ik wel iets wat niet kan/bestaat.
 
Laatst bewerkt:
Wildcard? No way...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan