Access 2016 Disable listbox, blokkeren keuzelijst

Status
Niet open voor verdere reacties.

KPTPTT

Gebruiker
Lid geworden
2 mrt 2018
Berichten
321
Hallo. Een formulier heeft drie keuzelijsten met ieder een reeks monteursnamen waaruit een monteursnaam kan worden gekozen. De namen zijn gerelateerd aan een tabel c.q. records. In het formulier is een checkbox. Wat ik zou willen is dat, wanneer de checkbox True is, de drie keuzelijsten worden geblokkeerd bij bv. een klik of after update. Een wijziging is dus niet toegestaan. Door de checkbox moet de toegang tot de listboxen niet mogelijk zijn en mag ook geen selectie plaatsvinden. De reeds gemaakte keuzes blijven intact en blijven zichtbaar. Is de box False, dan kunnen keuzes gemaakt worden. Hoe kan ik dit realiseren?
Ik heb de volgende code in een testje geprobeerd. De naam in de betreffende listbox komt alsnog in de regel en wordt uitgegrijsd en geblokkeerd. Als ik de listbox weer op True zet, dan blijft de box geblokkeerd en uitgegrijsd en dat is niet de bedoeling. De listbox doet niets meer. Tevens is door het aanklikken alsnog de naam in het veld van de box geplaatst wat ook niet de bedoeling is.
Code:
Private Sub o_Naam_monteur_2_Click()           '2e listbox
With Form_Werkorder.[o_Naam monteur 2]
   [o_Naam monteur 2].Enabled = False
   End With
End Sub
 
Laatst bewerkt:
Kan simpel met één regel code. Ik heb een voorbeeldje gepakt dat ik had liggen, dus je moet de namen maar even aanpassen.
Code:
Private Sub Form_Current()
    Me.Gebland.Enabled = Me.Aanpassen = True
End Sub

Ik blijf me er over verbazen dat je typische Access vragen gewoon in het VBA forum blijft stellen :).
 
Soms kom je door een vraag te stellen ineens op een idee. Het principe van de code <ListBox1.Enabled = False> werkt goed. Het item in de listbox wordt uitgegrijsd maar is nog goed leesbaar voor de waarden die er eventueel in staan. Zodra ik het formulier selecteer, dan wordt de volgende test code uitgevoerd.
Code:
Private Sub Form_Current() 
With Form_Werkorder.[o_Naam monteur 1]
        [o_Naam monteur 1].Enabled = True      '[o_Naam monteur 1] is naam Listbox
   End With

    With Form_Werkorder.[o_Naam monteur 2]
        [o_Naam monteur 2].Enabled = True
   End With
   
    With Form_Werkorder.[o_Naam monteur 3]
        [o_Naam monteur 3].Enabled = True
   End With
   
If Me.[o_Uitgevoerd] = True Then                 '[o_Uitgevoerd] is naam Checkbox
    With Form_Werkorder.[o_Naam monteur 1]
        [o_Naam monteur 1].Enabled = False
   End With

    With Form_Werkorder.[o_Naam monteur 2]
        [o_Naam monteur 2].Enabled = False
   End With
   
    With Form_Werkorder.[o_Naam monteur 3]
        [o_Naam monteur 3].Enabled = False
   End With
End If
End Sub

Eerst worden de drie listboxes ingeschakeld en daarna, als de checkbox <o_uitgevoerd> is aangevinkt, worden de drie listboxes gedisabled c.q. uitgegrijsd. Zo kan je altijd nog nadat de chekbox is uitgevinkt weer de listboxes instellen. De code moet ik nog wat compacter maken.
 
Dank je wel voor je reactie. Ik zie nu pas na mijn aanvulling van mijn vraag jouw reactie. Ik had ook zoiets bedacht. Ik vraag mij alleen af wat de tussenvoegsel < Me.Aanpassen> doet. Wat is Aanpassen? Geeft dat meer waarde dan mijn coderegel?
Ik dacht dat ik goed zat met een VBA vraag. Het gaat immers om code en niet algemeen Access. Sorry voor het ongemak. Moet ik volgende programmeervragen in de rubriek Access stellen en de vervolg antwoorden in de rubriek VBA?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan