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

VBA code voor undo

Status
Niet open voor verdere reacties.

Atwist

Terugkerende gebruiker
Lid geworden
24 jan 2006
Berichten
1.055
Besturingssysteem
Wndows 10
Office versie
2016
Hallo
Ik probeer een stukje VBA te vinden die een UNDO functie heeft.
Deze wil ik gebruiken op mijn sheet in combinatie met een Checkbox, de bedoeling is als ik de Checkbox op "True" zet moet het getal van C2 naar E2, dit lukt mij wel, maar als ik bijvoorbeeld deze Checkbox per ongeluk heb gekozen en deze weer op "False" zet dan zou de actie van de "True" weer terug gedraaid moeten worden.
Code:
Private Sub CheckBox1_Change()
    CheckBox1.true then
    Range("C2").Select
    Selection.Cut
    Range("E2").Select
    ActiveSheet.Paste
       
End Sub

Heb een bestandje als voorbeeld

Ik hoop dat de tekst duidelijk is.
 

Bijlagen

  • test helpmij.xlsm
    23 KB · Weergaven: 26
Waarom dan niet gewoon zo?
Code:
Private Sub CheckBox1_Change()
    If CheckBox1 Then
        Range("E2") = Range("C2")
        Range("C2").ClearContents
    Else
        Range("C2") = Range("E2")
        Range("E2").ClearContents
    End If
End Sub
 
Code:
Private Sub CheckBox1_Click()
    If CheckBox1.Value Then
        Range("E2") = Range("C2").Value
        Range("C2").ClearContents
        
      
    Else
       Range("C2") = Range("E2").Value
        Range("E2").ClearContents
       
    End If
End Sub
 
Of zo. Dan heb je het meteen voor meerdere regels in orde:
Code:
Private Sub CheckBox1_Change()
    Call SwapValues(CheckBox1, 2)
End Sub

Private Sub CheckBox2_Change()
    Call SwapValues(CheckBox2, 3)
End Sub

Sub SwapValues(ByVal cbx As Boolean, rgl As Long)
    If cbx Then
        Range("E" & rgl) = Range("C" & rgl)
        Range("C" & rgl).ClearContents
    Else
        Range("C" & rgl) = Range("E" & rgl)
        Range("E" & rgl).ClearContents
    End If
End Sub
 
Edmoor en Globe

Ik dank jullie voor de oplossing heb nooit gedacht aan "ClearContents"

Ed jou laatst voorstel is het helemaal, ERG VEEL DANK:thumb::thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan