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

Readonly foutmelding userform

Status
Niet open voor verdere reacties.

Neocon

Gebruiker
Lid geworden
28 dec 2009
Berichten
57
Goedemiddag,

Ik wil in mijn userform bepaalde textboxen al dan niet beveiligen en grijs laten worden bij een bepaalde keuze.

In bijgevoegd (vereenvoudigd) voorbeeld kies ik eerst in een dropdown tussen opening en heropening.
Als de keuze 'opening' is dan moet de 1e textbox grijs en geblokkeerd worden.

Daarom heb ik aan de combobox de volgende code gehangen:

Private Sub Pakket1_Change()
If Me.Pakket1.Value = "Opening" Then
Me.Textbox1.ReadOnly = True

Else
Me.Textbox1.ReadOnly = False
End If
End Sub

Echter wanneer ik in de combobox 'opening' selecteer geeft Excel een foutmelding: Compileerfout. Kan de methode of gegevenslid niet vinden.
Vervolgens wordt in de code het stukje readonly gearceerd, waardoor ik denk dat daar de fout in zit. Echter kan ik niet herleiden wat er verkeerd gaat.

Weet één van jullie wat hier mis gaat?

Alvast bedankt!

Groet,
Jeffrey
 

Bijlagen

Ik denk dat het zo beter gaat.

Code:
 Me.Textbox1.Enabled = False
 
Dank voor de snelle reactie.

Dit werkt inderdaad met betrekking tot de blokkade op invoer. Echter wordt het invulveld hierdoor niet grijs.
Ik had in een ander forum gelezen dat readonly hiervoor de oplossing zou zijn (zowel een blokkade als een grijs markering).

Heb jij enig idee hoe ik deze textboxen ook grijs kan krijgen?

Alvast bedankt!
 
Probeer deze eens:
Code:
Private Sub Pakket1_Change()
    If Me.Pakket1.Value = "Opening" Then
        Me.Textbox1.Enabled = True
        Me.Textbox1.Locked = False
     Else
        Me.Textbox1.Enabled = False
        Me.Textbox1.Locked = True
   End If
End Sub

Het gaat echter om evenuele tekst in het veld dat dan grijs wordt, niet de textbox zelf.
 
Laatst bewerkt:
Hiermee wordt de textbox niet grijs.

Ik heb wel een workaround gevonden:

Me.Textbox1.Enabled = False
Me.Textbox1.BackColor = vbButtonFace

Dat werkt wel, enig nadeel is dat je per textbox 2 regels moet aanpassen ipv 1 (zoals bij readonly in theorie het geval zou zijn).

Opzicht is de vraag opgelost middels een workaround. Tenzij iemand beide regels in 1 regel kan zetten, zodat er per textbox (300 in totaal) slechts 1 regel aangepast hoeft te worden.
 
Code:
Private Sub UserForm_Click()
    TextBox1.BackStyle = ABS(TextBox1.BackStyle = 0)
End Sub

Met een gebeurtenis klassemodule heb je aan 6 regels voldoende voor 300 of meer tekstvakken.
Maar de hele exercitie lijkt me daarvoor volledig overbodig.
Er zijn betere manieren om gebruikers te begeleiden.

Ik had in een ander forum gelezen dat readonly hiervoor de oplossing zou zijn
Ben benieuwd welk forum we beter kunnen vermijden.
 
Laatst bewerkt:
Je geeft aan dat je met een gebeurtenis klassemodule aan 6 regels voldoende hebt...
Kan jij uitleggen wat je hiermee bedoeld.

De gebruiker van het userform moet kiezen tussen een opening of een heropening van een winkel.
Er zijn textboxen voor de huidige openingstijden én de nieuwe openingstijden.
Echter bij een opening zijn er geen huidige openingstijden en daarom moet de invoer dan geblokt worden.

Dit is één van de voorbeelden waarbij ik diverse textboxen moet uitschakelen bij een bepaalde optie.
Echter met de VBA code die we gisteren hebben gevonden resulteert dit in een extreem lange code.

Dit is alleen al voor de huidige openingstijden, dan moeten de sluitingstijden er nog bij komen (en veel andere textbox namen).

Me.huidig_ma_open.Enabled = False
Me.huidig_ma_open.BackColor = vbButtonFace

Me.huidig_di_open.Enabled = False
Me.huidig_di_open.BackColor = vbButtonFace

Me.huidig_wo_open.Enabled = False
Me.huidig_wo_open.BackColor = vbButtonFace

Me.huidig_do_open.Enabled = False
Me.huidig_do_open.BackColor = vbButtonFace

Me.huidig_vr_open.Enabled = False
Me.huidig_vr_open.BackColor = vbButtonFace

Me.huidig_za_open.Enabled = False
Me.huidig_za_open.BackColor = vbButtonFace

Me.huidig_zo_open.Enabled = False
Me.huidig_zo_open.BackColor = vbButtonFace

Is er een manier om dit in een paar regels te coderen?

Voor wat betreft je vraag, op dit forum was er een discussie gaande over de readonly stuk:
http://www.vbforums.com/showthread.php?534062-RESOLVED-How-to-make-textbox-gray-out
 
Je hebt het op die pagina inderdaad keurig uitgelegd :)
 
SNB; thanks voor de site. Ik ga het stap voor stap doorlopen, maar de uitleg lijkt helder te zijn.
Dank voor de hulp.
 
Als het niet duidelijk is, laat het dan svp horen; dan kan dat verbeterd worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan