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

Een waarde in een cel mag, maar er moet wel een waarschuwing zichtbaar worden

Status
Niet open voor verdere reacties.

CasperEx

Gebruiker
Lid geworden
3 dec 2013
Berichten
78
Beste Helpers

Zie het bijgesloten bestandje

In het gele gebied een rij letters, A en B.
De letters worden via een gegevensvalidatie gekozen. De bron staat in het groene gebied

Als de B wordt gekozen wil ik automatisch een melding.
Als de A wordt gekozen is een melding niet nodig

Ik wil geen gebruik maken van de invoermelding in gegevensvalidatie (vind ik niet fraai)

Ik heb de volgende code in vba gevonden

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A1") = "B" Then MsgBox "Let op: U kiest een B", vbOKOnly
End Sub


Mijn eerste probleem
De code werkt goed in A1 maar ik wil deze ook automatisch goed laten werken in de volgende 100 regels (waar dus ook óf een A óf een B kan staan)

Mijn tweede probleem
De code is nu spontaan gaan werken in mijn hele werkblad. Waar ik ook iets intik, steeds verschijnt deze boodschap. Ook als ik iets intik wat helemaal geen A of B is.

Heeft iemand een idee? Alvast weer hartstikke bedankt voor de moeite !!Bekijk bijlage Celwaarde beperken.xlsm
 
Wellicht is dit voldoende:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cl As Range
If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
If Target = "B" Then MsgBox "Let op: U kiest een B", vbOKOnly
End Sub
 
Werkt perfect, Top !!

Maar wel een nieuw "iets"

Als ik de velden in kolom leegmaak (selecteren en deleten) krijg ik een foutmelding. De hieronder vetgedrukte tekst in vba licht geel op

Is dat te voorkomen?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cl As Range
If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
If Target = "B" Then MsgBox "Let op: U kiest een B", vbOKOnly
End Sub
 
Deze aanpassing verhindert dat:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Range("A1:A100")) Is Nothing Or Selection.Count > 1 Then Exit Sub
  If Target = "B" Then MsgBox "Let op: U kiest een B", vbOKOnly
End Sub
 
Laatst bewerkt:
Wat is, denk je, het verschil in handeling ?
Zou het daarmee te maken hebben ?
Wat is de bedoeling van 'Dim cl as range' ?
 
Die Dim cl As Range zit er voor niets tussen, vergeten weg te halen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan