VBA een cel automatisch laten wissen middels een voorwaarde in een andere cel

Status
Niet open voor verdere reacties.

Roel79

Nieuwe gebruiker
Lid geworden
1 mei 2012
Berichten
2
Hallo allemaal.

Aangezien we in de bouw overschakelen op nieuwe normen ben ik bezig e.e.a. aan excel spreatsheets te herschrijven.

Ik zit al twee avonden te klooien om iets voor elkaar te krijgen in VBA.
Ik wil een cel C1 automatisch laten wissen (ClearContents) middels VBA wanneer er er in cel A1 de waarde "nee" wordt ingevuld.
Wanneer de waarde "ja" wordt ingevuld in cel A1 moet ik gewoon in cel C1 iets kunnen invullen.

In cel A1 kunnen geen andere waarden staan dan "ja" of "nee". Ik heb dit middels gegevensvalidatie in cel A1 afgebakend.

Nu heb ik het denk ik al een oplossing, alleen denk ik dat ie een beetje omslachtig is... De spreatsheet begint namelijk al te rekenen als ik de waarde verander.
Kan iemand mij helpen met een betere oplossing?

BvD

Verder vraag ik me af of ik dit nu ook in het module blad moet zetten. Ik heb de code nu in de sheet zelf staan.
Bekijk bijlage test.xlsm
Dit is mijn code:
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim bundels
     bundels = Cells(1, 1).Value
           If bundels = "nee" Then
                    Cells(1, 3).ClearContents
            Else: Exit Sub
      End If
End Sub

Zie ook bijgevoegd bestand.
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  if target.address & target.value="$A$1nee" then target.offset(,2).clearcontents
End Sub

Deze code werkt alleeen in de codemodule van het werkblad waarop ie betrekking heeft, omdat het gebruik maakt van een gebeurtenis ( Change ) in juist dat werkblad.
 
Laatst bewerkt:
Zonder het $-teken voor nee werkt het beter;)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address & Target.Value = "$A$1nee" Then Target.Offset(, 2).ClearContents
End Sub
 
Alvast bedankt voor de reacties.

Kan ie ook zo?


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  if target.address & target.value="$A$1$nee" then target.offset(,2).clearcontents then target.offset(,-2)
End Sub

Zodat ie weer op de oorspronkelijke cel terugspringt?

Wat mij overigens opvalt is dat ik de code begin met ....As Excel.Range en jullie met .... As Range.

Maakt dat nog iets uit?

BvD
 
@WB

Maai niet al het gras voor de voeten van de OP weg....... ;)

@Roel79

Als je snapt wat de code doet en hoe die is opgebouwd kun je dat nu zelf.

Ja, dat maakt uit ( maar had je die ervaring zelf al niet ?)

Zorg er in de code ook nog voor dat het goed gaat als meer dan 1 cel geselecteerd is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan