Toon posts:

[Excel/VBA] Groeperen van OptionButtons*

Pagina: 1
Acties:
  • 334 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
De situatie is als volgt: in Excel wordt een aantal bedrijven ingeladen. Dit aantal is steeds verschillend. Voor elk bedrijf wil ik kunnen aangeven of de informatie vertrouwlijk is of niet. Ik heb gekozen voor een opzet waarbij achter de bedrijfsnamen twee optionbuttons komen. Eentje voor 'ja' en eentje voor 'nee'. Vanzelfsprekend wil ik dat die twee buttons in 1 'groep' zitten, zodat als je de ene 'aan' zet, de ander 'uit' gaat. Nou is het toevoegen van de knoppen in VB geen probleem, maar lukt het mij niet in de code een GroupName aan de knop te koppelen. (bv, voor die twee knoppen de naam van het bedrijf oid.) Bij een handmatig toegevoegde knop hoef je dus alleen maar de property 'GroupName' hetzelfde in te vullen voor twee knoppen, maar in de code van VB lukt dit nog niet.
De knop selecteren en dan bv. het volgende, werkt niet.
With Selection
.GroupName = "Bla"
End With

Iemand een idee????

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je maakt het ding aan met de functie Add van OLEObjects. Deze functie geeft een OLEObject terug. Om bij het object dat gemaakt is te komen gebruikt je de Object-property.

Kort voorbeeldje:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Sub Build()
    Dim rngY As Range, rngN As Range
    Dim oleY As OLEObject, oleN As OLEObject
    Dim optY As MsForms.OptionButton, optN As MsForms.OptionButton
    
    For rij = 1 To 5
        'positie bepalen...
        Set rngY = ActiveSheet.Range("B" & Trim(rij))
        With rngY
            l = .Left + 1
            t = .Top + 1
            w = .Width - 1
            h = .Height - 1
        End With

        'OptionButton maken...
        Set oleY = ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", _
            Left:=l, Top:=t, Width:=w, Height:=h, DisplayAsIcon:=False)

        'OptionButton bewerken...
        Set optY = oleY.Object
        With optY
            .Caption = "Ja"
            .GroupName = Trim(rij)
            .Value = True
            .Font.Size = 7
        End With

        'en hetzelfde doen voor de tweede...
        Set rngN = ActiveSheet.Range("C" & Trim(rij))
        With rngN
            l = .Left + 1
            t = .Top + 1
            w = .Width - 1
            h = .Height - 1
        End With

        Set oleN = ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", _
            Left:=l, Top:=t, Width:=w, Height:=h, DisplayAsIcon:=False)

        Set optN = oleN.Object
        With optN
            .Caption = "Nee"
            .GroupName = Trim(rij)
            .Font.Size = 7
        End With

    Next
End Sub

[ Voor 7% gewijzigd door Daos op 20-06-2005 15:44 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-08 12:58

NMe

Quia Ego Sic Dico.

VBA-vragen mogen tegenwoordig gesteld worden in Officesuites en -software. :)

PW >> OFF

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Daos, ziet er goed en vooral duidelijk uit! Zal het vanavond eens gaan proberen. Als het werkt is mijn dank groot. (toch bijna anderhalve dag mee aan het kloten geweest.)

edit:

Krijg een foutmelding op de regel: "optY As MsForms.OptionButton" en wel "User-Defined type not defined". Nou heb ik best leuke dingen gedaan in VB, maar nog niet veel met 'user-defined types'. Waarschijnlijk is het dus iets simpels, maar ik zou niet weten wat. Iemand?

[ Voor 47% gewijzigd door Verwijderd op 20-06-2005 16:32 ]


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Verwijderd schreef op maandag 20 juni 2005 @ 16:11:
Daos, ziet er goed en vooral duidelijk uit! Zal het vanavond eens gaan proberen. Als het werkt is mijn dank groot. (toch bijna anderhalve dag mee aan het kloten geweest.)

edit:
Krijg een foutmelding op de regel: "optY As MsForms.OptionButton" en wel "User-Defined type not defined". Nou heb ik best leuke dingen gedaan in VB, maar nog niet veel met 'user-defined types'. Waarschijnlijk is het dus iets simpels, maar ik zou niet weten wat. Iemand?
2 oplossingen:
1 die regel eruit halen, maar dan krijg je geen lijstje meer als je het puntje achter optY zet.
2 of extra referentie maken naar Microsoft Forms 2.0 Object Library (C:Windows\System(32)\Fm20.dll) op een van de volgende manieren:
a deze toe voegen bij tools -> references
b een knopje tekenen en weer verwijderen


offtopic:
Waarom gebruik je geen CheckBox?

[ Voor 6% gewijzigd door Daos op 20-06-2005 17:55 ]


Verwijderd

Topicstarter
Daos, mijn dank is groot! De reference toevoegen bleek inderdaad de benodigde Gouden Greep!
Weer een stapje dichter gekomen bij het bouwen van De Perfecte Tool! ;)
Pagina: 1