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

checkbox disable

Status
Niet open voor verdere reacties.

resmatrix

Gebruiker
Lid geworden
6 nov 2006
Berichten
173
Goedemiddag

ik heb een excel sheet met 200 CheckBoxen hiervan wil ik dat er maar steeds 1 geselecteerd kan worden.

Hoe kan ik eenvoudig ervoor zorgen dat als er 1 is aangevinkt de rest disabled is?

vast dank voor de hulp
 
Dan moet je geen checkboxen maar optionbuttons gebruiken.

Met vriendelijke groet,


Roncancio
 
Ai daar had ik even niet op gerekend

Dank voor het antwoord.

Het is niet op een andere wijze mogelijk met checkboxen? door bijvoorbeeld:

Code:
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
        CheckBox2.Enabled = False
        CheckBox3.Enabled = False
    End If
If CheckBox1 = False Then
        CheckBox2.Enabled = True
        CheckBox3.Enabled = True 
end Sub

het is namelijk nogal wat werk om t overnieuw the doen
 
Ja, maar niet zo.
Dan krijg je namelijk 200 * 200 = 40.000 code regels.

Wat voor checkboxen zijn het eigenlijk?

Met vriendelijke groet,


Roncancio
 
sorry voor de late reactive moets naat het buitenland

in antwoord op de vraag : normale checkboxen (form control)

en ja 40000 regels is iets teveel van t goede
 
Volgens mij zijn het juist active-x checkboxen die je gebruikt, gezien de routine in #3.
Met form controls zou je nog iets kunnen met Application.Caller.
Ik voorzie dat je toch opnieuw zal moeten beginnen.
 
Laatst bewerkt:
dank voor je reactie

nee het zijn absolutt geen active x boxes

maar wat je zegt over application caller daar heb ik geen kaas van gegeten :(
 
Je zou met classes kunnen werken maar als je niet bekend bent met Application.Caller worden classes toch wel erg lastig.
Bovendien zijn classes veel beter geschikt voor ActiveX controls.
Met VBA zou je je werkblad kunnen laten vullen met checkboxes maar je zou je ook kunnen afvragen of hiermee niet je doel voorbij schiet.

Met vriendelijke groet,


Roncancio
 
Het aantal van 40.000 regels zal wel meevallen. Je kan ook iets als dit doen:
Code:
Private Sub CheckBox1_Click()
    If CheckBox1 Then SetCheckBoxesFalse ("CheckBox1")
End Sub

Private Sub CheckBox2_Click()
    If CheckBox2 Then SetCheckBoxesFalse ("CheckBox2")
End Sub

Private Sub CheckBox3_Click()
    If CheckBox3 Then SetCheckBoxesFalse ("CheckBox3")
End Sub

Sub SetCheckBoxesFalse(Behalve As String)
    Dim ChkBx As OLEObject
    For Each ChkBx In ActiveSheet.OLEObjects
        If TypeName(ChkBx.Object) = "CheckBox" And ChkBx.Name <> Behalve Then
            ChkBx.Object = False
        End If
    Next ChkBx
End Sub

Dat zijn 3 regels per CheckBox en een kleine Sub routine van 8 regels = 608 regels voor die 200 CheckBoxes.
 
Laatst bewerkt:
Met classes hoef je niet voor elk checkbox code te schrijven om de macro aan te sturen.
Bij het openen van het bestand verwijst de code dan naar bijvoorbeeld alle checkboxen. Indien een willekeurig checkbox wordt aangeklikt, treedt de macro in werking.
Het grote voordeel is naast het feit dat je voor elk checkbox geen code hoeft te schrijven is dat je voor elke nieuwe checkbox de macro automatisch in werking treedt. Verder hoef je ook geen code te verwijderen of de naam aan te passen mocht met het betreffende checkbox hetzelfde zijn gebeurd.

Met vriendelijke groet,


Roncancio
 
Helemaal correct. Maar door eerdere informatie wilde ik ook deze zonder classes even laten zien.

Overigens is de code in #9 voor ActiveX CheckBoxes. Voor formulier CheckBoxes kan het dit zijn:
Code:
Sub Selectievakje1_Klikken()
    SetCheckBoxesFalse (Application.Caller)
End Sub

Sub Selectievakje2_Klikken()
    SetCheckBoxesFalse (Application.Caller)
End Sub

Sub Selectievakje3_Klikken()
    SetCheckBoxesFalse (Application.Caller)
End Sub

Sub SetCheckBoxesFalse(Behalve As String)
    For Each cb In ActiveSheet.Shapes
        If cb.Type = msoFormControl Then
            If cb.FormControlType = xlCheckBox Then
                If cb.AlternativeText <> Behalve Then cb.ControlFormat.Value = xlOff
            End If
        End If
    Next cb
End Sub
 
Laatst bewerkt:
Ai daar had ik even niet op gerekend
...
het is namelijk nogal wat werk om t overnieuw the doen
Door middel van een paar regels VBA zou je ook die Optionbuttons kunnen genereren in je sheet. Ik kan me voorstellen dat dat handmatig nogal wat werk is. Deze insteek lijkt mij persoonlijk beter dan gaan lopen rommelen met een besturingselement die daar helemaal niet voor bedoeld is.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan