Wijzigen

  • Onderwerp starter Onderwerp starter FS62
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

FS62

Gebruiker
Lid geworden
27 jun 2020
Berichten
21
Ik heb in Excel een kolom met 150 regels. Elke regel heeft selectievakje om een specifieke medewerker te (de)selecteren.
Het (de)selecteren van het vakje zorgt (via besturingselement opmaken en koppeling met cel) in een andere kolom per regel de waarde WAAR of ONWAAR.
Nu wil ik dat bij het wijzigen van het (de)selecteren van de medewerker een macro opgestart wordt. Dit wil ik niet doen via het besturingselement maar door het wijzigen van de WAARDE in ONWAAR of andersom.

De VBA-code werkt wel als ik handmatig de waarde verander in WAAR of ONWAAR maar niet als dit via het selectievakje gebeurt. Volgens mij is dit niet moeilijk maar ik kan het niet vinden. Wie kan en wil mij helpen. Alvast bedankt!

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Set KeyCells = ActiveSheet.Range("L4:L153")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
        MsgBox "Cell " & Target.Address & " has changed."
End If
End Sub
 
Die wijziging triggert niet het Worksheet_Change event.
Maak er 1 macro voor en koppel die aan de selectievakjes, als het gaat om formulier besturingselementen.
Bijvoorbeeld deze:
Code:
Sub SV_Klik()
    Dim chk As Shape
    Set chk = ActiveSheet.Shapes(Application.Caller)
    
    If Not Intersect(Range("L4:L153"), chk.ControlFormat.LinkedCell) Is Nothing Then
        MsgBox chk.ControlFormat.LinkedCell & " has changed"
    End If
End Sub

Of plaats een voorbeeld document.
 
Laatst bewerkt:
Ik kan de macro aan de selectievakjes hangen maar dan moet ik dat 150 keer doen.
Via de kolom met WAAR/ONWAAR (getriggerd door het selectievak) kan ik werken met een range en is het volgens mij veel eenvoudiger.
Oftewel hoe kan je een macro triggeren als een selectievak de waarde verandert in plaats van een wijziging direct door de gebruiker.
In bijlage voorbeeldbestand Test.xls.
 

Bijlagen

Dat kan alleen als je per selectievakje een macro hebt.
En dat kan zoals ik al liet zien, 1 macro voor alle selectievakjes.
Maar ik probeer straks nog even wat anders.
 
Moet je weten welke Linked Cell gewijzigd is? of Volstaat een wijziging in 1 van de 150 regels
 
Alleen maar een wijziging in 1 van de cellen. Niet specifiek welke gewijzigd is.
 
Dan zou je het volgende kunnen doen:

in een module:

Code:
Function LinkCel(rng As Range)
Debug.Print "A Cell " & rng.Address & " has changed."
End Function

en aanroep in 1 cel

=LinkCel(L4:L153)
 
Ik kan de macro aan de selectievakjes hangen maar dan moet ik dat 150 keer doen.
Ook dat kan met een macro:
Code:
Private Sub MacroOnCheckBox()
    Dim shp As Shape
    On Error Resume Next
    For Each shp In ActiveSheet.Shapes
        If Left(shp.Name, 9) = "Check Box" Then
            If shp.ControlFormat.LinkedCell <> "" Then
                shp.OnAction = "'" & ThisWorkbook.Name & "'!SV_Klik"
            End If
        End If
    Next shp
End Sub

Ze maken dan allemaal gebruik van dezelfde macro met in dit geval de naam SV_Klik die in een module zit:
Code:
Sub SV_Klik()
    Dim chk As Shape
    Set chk = ActiveSheet.Shapes(Application.Caller)
    MsgBox chk.ControlFormat.LinkedCell & " has changed"
End Sub
 
Laatst bewerkt:
Bedankt voor de info. Ik heb het opgelost door de macro te koppelen aan het selectievak.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan