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

Inhoud cel veranderen als

Status
Niet open voor verdere reacties.

mark1987vw

Gebruiker
Lid geworden
19 mei 2009
Berichten
96
Hallo!

Ik wil via een macro alle cellen in kolom D en E die de letter 'c' bevatten aanpassen naar de letter 'a'
en wanneer deze zelfde kolommen de letter 'a' bevatten, moeten deze veranderen naar 'c'

Ik heb de volgende code gebruikt.

Code:
Sub Selecteren()
    Dim cell As Range
    For Each cell In Range("D1:E41")
        If cell.Value = "c" Then
            Range("D1:E41").Value = Range("A2").Value
Elseif cell.Value = "a" Then
            Range("D1:E41").Value = Range("B2").Value
        End If
    Next cell
End Sub

Echter wanneer ik dit zo doe met de bovenstaande code dan veranderd die alle cellen in die range naar 'a'
Maar alleen de cellen die 'c' bevatten moet een 'a' worden of andersom.

Ik hoor graag of iemand hier de oplossing voor weet.

Bedankt alvast
 
Zo:
Code:
Sub Selecteren()
    a = Range("A2")
    c = Range("B2")

    Application.ScreenUpdating = False
    For Each cl In Range("D1:E41")
        If cl.Value = a Or cl.Value = c Then cl.Value = IIf(cl.Value = c, a, c)
    Next cl
    Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Of:
Code:
Private Sub CommandButton1_Click()
 Cells(1, 4).CurrentRegion.Columns(1).Name = "b"
 [b] = [if(b="a","c",if(b="c","a",b))]
 [b].Offset(, 1) = [if(offset(b,,1)="c","a",if(offset(b,,1) = "a","c",b))]
End Sub
 
Als cel A2=a
Code:
cell.Value = Range("A2").Value

Dit werkt inderdaad prima. en de suggestie van edmoor ook. Ik zou graag 1 ding anders willen maar dit had ik niet uitgelegd.

Wanneer ik nu de macro uitvoer veranderen alle 'c' in een 'a' en anders om. Ik zou alleen willen dat wanneer ik de macro uitvoer dat die alle 'c' veranderd naar 'a' en dus de niet ook direct de 'a' veranderd naar een 'c'.
Ik gebruik het als een check systeem. Wanneer ik dus 1 keer de macro uitvoer, 'checkt' (veranderd die alle 'c' naar 'a') die alles maar veranderd die niet alle 'a' naar een 'c'. Dat gebeurd pas als ik de macro nog een keer uitvoer. Mogelijk moet ik het doen met 2 losse macro's maar misschien kan het ook in 1.
 
Zet het onder een ToggleButton (Wisselknop).
 
Misschien toch maar eens een voorbeeldbestand met duidelijke uitleg.
 
Ja het is een beetje lastig om uit te leggen maar hierbij een poging met voorbeeld bestand.

Wanneer je hier op 'Selecteer en Deselecteer' klikt, veranderd die elke 'a' binnen de range naar een c en anders om. (Bij een 'a' en een 'c' in Webdings krijg je dan een soort van checkbox idee).

Wat ik nu wil is dat wanneer je de macro uitvoert. de gehele range waar een 'c' instaat veranderd naar een 'a' maar de 'a' niet veranderd naar 'c'. Zodat dan alles is 'unchecked' Wanneer je er nog een keer op klikt dan 'checked' die alles en veranderd hij dus alle 'c' naar 'a'.
 

Bijlagen

Als je de eerste keer alle 'c' naar 'a' veranderd is alles dus 'a'.
De volgende keer wordt dan alles 'c'
Is dat de bedoeling?
 
@edmoor

Ja dat klopt dat is de bedoeling.

Ik dacht het nu zo op te lossen:

Code:
Sub Selecteren()
    Dim cell As Range
    For Each cell In Range("D1:E50")
        If cell.Value = "c" And Range("E5").Value = "c" Then
            cell.Value = Range("F1").Value
ElseIf cell.Value = "a" Then
            cell.Value = Range("F2").Value
        End If
    Next cell
End Sub

Alleen dat veranderd cel E5 naar 'c' en dat wil ik niet.
 
Laatst bewerkt:
@edmoor
Ja dat klopt dat is de bedoeling.

Dan wil je dus gewoon wisselen tussen c en a voor het hele opgegeven bereik.
Waarom dan zo moeilijk doen?
 
@edmoor Geen idee, heb jij de oplossing. Ik wil eigenlijk in het bestand alles 'unchecken' of alles 'checken'

@AD1957 Dit klopt voor de helft. Dus wanneer ik erop druk is goed. Dan moet die gewoon stoppen. Wanneer ik er nog een keer op druk moeten die alles "unchecken". dus alles aanpassen naar c. Ja ik leg het een beetje krom uit misschien maar ik wil een soort van Select / Deselect knop maken voor alles.
 
Daar is dus de Wisselknop voor.
 
Oke ik hoopte dat het ook mogelijk was met een eigen gemaakte knop en dan koppelen aan een macro. Vind die standaard vba buttons nooit zo mooi.
:cool:
 
Dan zet je dit er achter:
Code:
Sub Selecteren()
    Static sts As Boolean
    
    sts = Not sts
    Range("B6:B15").Value = IIf(sts, "a", "c")
End Sub
 
Wat die nu doet is elke cel veranderen naar a of naar c.
Nu heeft het originele bestand een grotere range D1:E50, waarin ook lege cellen zijn. Deze moeten niet woorden aangepast.
Dus alleen cellen waar een 'c' of een 'a' in staat.
 
Dan pas je de range in de code toch aan?
Anders begrijp ik je niet meer en klopt dus je voorbeeld document niet.

Of dit?
Code:
Sub Selecteren()
    Static sts As Boolean
    
    sts = Not sts
    Range("D1:E50").SpecialCells(2).Value = IIf(sts, "a", "c")
End Sub
 
Laatst bewerkt:
Oke ik heb het voorbeeld bestand aangepast.
En jouw code hier in gezet.

In de range (die ik nu wat heb vergroot), staan ook een aantal lege cellen in.
Dus wanneer je de macro uitvoert moeten alleen de cellen waar een c of a instaat veranderen.
Dus de lege cellen blijven leeg binnen de range.
Wanneer je nu de macro uitvoert vult die ook de lege cellen met een a of een c en dit moet niet gebeuren.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan