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

Waarde van een checkbox uitvragen

Status
Niet open voor verdere reacties.

Stone52

Gebruiker
Lid geworden
11 dec 2004
Berichten
320
Forummers,

Op blad1 heb ik een checkbox. Nu wil ik in mijn VBA-code in een willekeurige module de waarde uitvragen van de checkbox. Afhankelijk van de waarde van de checkbox wordt een stuk code uitgevoerd. Is dat mogelijk en zo ja hoe ?
 
Normaal gezien doe je:

Code:
naamvandecheckbox.Value
 
Hallo Wigi,

Is onderstaande code wat je bedoelde ? Deze code geeft de melding: Object vereist.

Code:
If CheckBox1.Value = True Then
    MsgBox ("checkbox1 = true")
End If

Graag een suggestie.
 
Is het een Checkbox met de werkbalk Visual Basic gemaakt?
 
Inderdaad. De nummering van de resp. checkboxen begint op ieder blad vanaf 1. Kennelijk is er een manier om de checkbox per blad te adresseren.

Voor de duidelijkheid: ik wil enkele acties uitvoeren op een (via de checkbox) invisible gemaakt blad. Alle bladen visible maken, de code uitvoeren en daarna ALLE bladen invisible maken is geen oplossing. Ik wil alleen die bladen die in de resp. checkboxen aangevinkt zijn terugzetten op hun invisible-waarde.
 
Laatst bewerkt:
Wigi,


Ik begrijp het principe, echter de "Option explicit" lijkt problemen te geven. De uitvraging geeft nog problemen.

De checkboxen staan in "blad1", de gebruikte VBA-modules staan in verschillende modules, waarvan sommige "Public".

Kortom, heb je nog een hint voor mij.
 
Dan zal je toch het bestandje moeten bijhangen, anders wordt het gissen.
 
Hallo Wigi,


Mijn probleem is dat de excel-file groot is en ik niet eenvoudig een extract kan maken.

Misschien toch nog een nieuwe tip van jou. De checkboxen staan in een blad resp. zijn gekoppeld aan een specifiek blad1; de modules met de VBA-code kunnen (kennelijk) alleen werken met "visible" sheets. Kortom er is geen relatie tussen de modules en "blad1" met de checkboxen. Is die relatie op de één of andere manier te maken (public sub of iets dergelijks) ?

Toch maar even een voorbeeldje:

Code:
Private Sub CheckBox1_Click()
'op blad1
If CheckBox1.Value = True Then
    Sheets("Data").Visible = True
Else
    Sheets("Data").Visible = False
End If

End Sub

In Module1:

Code:
sub  XYZ()
' voorbeeld
   Sheets("Data").Select
    ActiveSheet.Unprotect
    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
    End With
    ActiveSheet.Protect
end sub

Het probleem ontstaat als "Data" invisible blijkt. Voor andere sheets wordt ook gebruik gemaakt van code in module1 en module2 en . . . . Deze modules worden ook gebruikt voor bewerkingen van andere bladen. De oplossing kan zijn alle te bewerken sheets tijdelijk "visible" te maken. Echter na afloop van de bewerking wil ik de resp. bladen hun oorspronkelijke visible/invisible status teruggeven. Een andere suggestie is welkom.
 
Stone52,

Hier een voorbeeldje.
Met een sub eerst de status checkbox opvragen dan beveiliging eraf halen ,
daarna kun je verder gaan met je code, of daarna een andere sub aanroepen met Call

Code:
Sub Voorbeeld()
    Application.ScreenUpdating = False
    ActiveSheet.Shapes("checkbox 1").Select
    If Selection.Value = xlOn Then
        With ActiveSheet
            .Unprotect Password:="test"
            .Columns("F:I").Hidden = True
        End With
        Range("D1").Select
        ActiveSheet.Protect Password:="test", DrawingObjects:=True
    Else
        Call Showall    'vinkje weer weg? roep dan hiermee een andere procedure aan
    End If
End Sub

Sub Showall()
    MsgBox "Showall"
End Sub


Heb je hier misschien iets aan?

Koosl
 
Koos,


Dank voor je reactie. Ik verwacht hier pas donderdagavond mee te kunnen experimenteren.
Wordt vervolgd. . . . . .
 
Koosl en Wigi,


Dank voor jullie inzet. De voorgestelde oplossingen waren niet 1 op 1 toepasbaar. Ik heb de oplossing gehaald uit een combinatie: voor verwerking de waarde van de checkboxen bepalen en bewaren, de verwerking uitvoeren en de bewaarde checkbox-waarden terugplaatsen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan