DMV een macro alle waarden die 'True' zijn omzetten naar 'False' in een kolom in exce

Status
Niet open voor verdere reacties.

tomme

Gebruiker
Lid geworden
25 nov 2011
Berichten
9
Hallo,
Sinds een week ben ik begonnen met het leren om VBA en macros te gebruiken in excel. Geweldig wat voor nieuwe wereld er open gaat! Nu loop ik tegen iets aan wat ik maar niet voor elkaar krijg en volgens mij vrij simpel op te lossen moet zijn.. maar hoe:confused:?

Ik wil graag door een macro te runnen alle True waarden in B3 t/m B32 naar False omzetten. (deze true/false waarden zijn gekoppeld aan selectie vakjes die dan door 1 druk op de knop allemaal gedeselecteerd zijn)

Door te kijken naar voorbeelden op internet lijkt mij dat onderstaande code dit voor elkaar moet krijgen. Wat moet er veranderd worden om de code werkend te krijgen?

Code:
Sub reset()
    Select Case Range("B3:B32").Value
         
            If Range("B3:B32").Value = True Then
                Range("B3:B32") = False
End If
End Select
End Sub

Groeten,
Tom
 
Indien je alles op false wil zetten

Range("b3:b32").value = false

Je select en if voegen hier weinig toe. Een range van meer dan 1 cel heeft nooit een enkele value. Je kunt de value van een range wel zetten. Alle waarden in de range worden dan hetzelfde
 
Wat u zegt lukt inderdaad alleen niet elke cel in B3:B32 moet gevuld worden met FALSE.. alleen de cellen die tussen B3 en B32 TRUE aangeven moeten FALSE worden op commando. (in de code is te zien dat er bv. niks gebeurt in B7, B12 en B13 o.a.)


Dit heb ik opgelost door deze code:

Code:
Sub rzc()
Dim lRow As Long
Dim lPart As Long
Dim ws As Worksheet
Set ws = Worksheets("Database functions")

   With ws
   Sheets("Database functions").Select
   
    Range("B3").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Selection.AutoFill Destination:=Range("B3:B6"), Type:=xlFillDefault
     
    Range("B8").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Selection.AutoFill Destination:=Range("B8:B11"), Type:=xlFillDefault
    
    Range("B15").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Selection.AutoFill Destination:=Range("B15:B16"), Type:=xlFillDefault
    
    Range("B18").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Selection.AutoFill Destination:=Range("B18:B19"), Type:=xlFillDefault
    
    Range("B23").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Selection.AutoFill Destination:=Range("B23:B26"), Type:=xlFillDefault
    
    Range("B28").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Selection.AutoFill Destination:=Range("B28:B32"), Type:=xlFillDefault

End With
End Sub

waarschijnlijk zit er overbodige code in maar het werkt, alleen niet zoals het moet. als ik deze macro aan een knop toe verwijs in een andere sheet en vervolgens op de knop druk. springt het beeld over naar de sheet waarin de macro zijn verandering aan brengt, genaamd ("Database functions") dus.

Weet u hoe ik dit overspringen kan verhelpen? behalve het overspringen werkt de macro zoals gewenst.

Gr,
 
Dat komt door het gebruik van select. Select doet muisklikken na. Daarom is het het beste gebruik van select te vermijden.

Waarom niet gewoon:

Code:
with sheets("database funcrions")
.range("b3:b6").value = false
'''etcetera
end with
 
Laatst bewerkt door een moderator:
Hartelijk dank voor uw oplossingen!! het werkt nu perfect.:d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan