Excel vraag VBA

Status
Niet open voor verdere reacties.

frans kooijman

Gebruiker
Lid geworden
22 apr 2008
Berichten
531
...Mag ik als totale ignorant een VBA vraag stellen?

Ik ben op zoek in Excel naar het volgende:
Als A1="Ja" dan wil ik een waarschuwingstekst in Cel B1: "Let op extra vergoeding"
Als A1=andere waarde dan wil ik B1 leeg

Maar in beide gevallen moet B1 handmatig overschreven kunnen worden !!

Ik kan uiteraard in Excel ïn cel B1 de formule zetten: =ALS(A1="Ja";"Let op extra vergoeding";"")
maar dan heb ik het probleem dat deze formule verdwijnt als iemand daarna de tekst van B1 handmatig overschrijft.

Kan iemand in VBA dit maken?
A1=Ja => B1 wordt "Let op extra vergoeding" en anders leeg
B1 altijd overschrijfbaar.
Indien B1 opnieuw gebruikt wordt (dus nadat bestand opgeschoond is) dat bij A1=Ja weer de waarschuwingstekst in B1 komt.

Ben benieuwd...of vraag ik het onmogelijjke?

Tks
Frans
 
Dat kan met bijvoorbeeld dit achter het betreffende werkblad:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        If UCase(Target.Value) = "JA" Then
            Cells(1, 2).Value = "Let op extra vergoeding"
        Else
            Cells(1, 2).Value = ""
        End If
    End If
End Sub
 
Thanks, bestand opgeslagen.

Nog 2 vragen als het mag:
Als ik nu bij A1 "JA" invul, dan gebeurt er nog niets. Wat betekent Cells(1, 2)?
Als ik de Range wil aanpassen van bv A1 naar A1 t/m A10, wordt het dan in VBA ("A1:A10"), dus met een dubbele punt?

Tks
Frans
 
Visual Basic is iets anders dan Visual Basic for Applications, VBA is programmeren binnen Office applicaties. Verplaatst naar juiste sectie.
 
Thanks, bestand opgeslagen.

Ok, maar wat heb je ermee gedaan?
Laten we ons eerst concentreren op het laten werken van die routine. Daarna komen je andere vragen wel aan bod.
 
...Ik ben inmiddels weer wat verder (en wijzer....).

Het lukt met onderstaande wel om cel B1 de tekst te laten verschijnen,
maar nog niet bij cel B2, B3 etc t/m B100. Komt omdat Cells(1, 2) staat, dus B1.
Maar waarin moet ik dit veranderen om dit voor alle B1:B100 te laten gelden?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
        If UCase(Target.Value) = "JA" Then
            Cells(1, 2).Value = "Let op extra vergoeding"
        Else
            Cells(1, 2).Value = ""
        End If
    End If
End Sub
 
Laatst bewerkt door een moderator:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A100")) Is Nothing Then target.offset(,1).Value = IIf(UCase(Target.Value) = "JA","Let op extra vergoeding","")
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan