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

Selectievakjes doorvoeren

Status
Niet open voor verdere reacties.

Ed Stoop

Gebruiker
Lid geworden
7 dec 2007
Berichten
23
Ik wil in kolom M selectievakjes hebben, 366 in totaal. Krijg ze alleen niet doorgevoerd en wil ze gekoppeld hebben aan de G cel in dezelfde rij. Heb onderstaande code gevonden maar weet niet wat ik daar mee moet. Kan iemand mij een hint geven?

bvd

Ed

Code:
Sub SelectievakjesPlaatsen()
Const n% = 10 'aantal selectievakjes
Const r% = 4 'rijnummer van eerste cel
Const k% = 3 'kolomnummer van eerste cel
Dim i%
For i = 0 To n - 1
ActiveSheet.CheckBoxes.Add((Cells(r + i, k).Left + 15), _
(Cells(r + i, k).Top - 2), 72, 72).Select
Selection.Characters.Text = ""
Selection.LinkedCell = Cells(r + i, k).Address
Selection.ShapeRange.Height = 17.25
Selection.ShapeRange.Width = 24#
Next i
End Sub
 
Laatst bewerkt door een moderator:
Ed Stoop, zet deze code (heb 'm voor je bewerkt zodat de vakjes vanaf de 2e regel in kolom M komen en de link in kolom G zit) in een standaard module van je Visual Basic Editor (VBE).
Code:
Sub SelectievakjesPlaatsen()
Const n% = 366 'aantal selectievakjes
Const r% = 2 'rijnummer van eerste cel
Const k% = 13 'kolomnummer van eerste cel
Dim i%
    
    For i = 0 To n - 1
        ActiveSheet.CheckBoxes.Add((Cells(r + i, k).Left + 15), _
        (Cells(r + i, k).Top - 2), 72, 72).Select
        Selection.Characters.Text = ""
        Selection.LinkedCell = Cells(r + i, k - 6).Address
        Selection.ShapeRange.Height = 17.25
        Selection.ShapeRange.Width = 24#
    Next i

End Sub
Deze module bereik je door op de combinatie Alt+F11 te drukken. In de dan geopende VBE klik je in de menubalk op Insert (invoegen) en dan op Module. Er wordt dan een nieuwe module voor je gemaakt waar je deze code in plakt. Als je dan met je cursor ergens in die code staat en op F5 drukt, gaat de code lopen en zal je blad gevuld worden met je selectievakjes. Zorg er dus wel voor dat je die Alt+F11 doet vanaf de sheet waar je die vakjes wilt hebben! :D

Groet, Leo
 
Laatst bewerkt:
Bedankt

Heb de vakjes erin gekregen. Staan 1 kolom te ver en ik moet ze nog linken. Daarna moet het vinkje standaard op "WAAR"staan. Het begin is er en ik ga nog effe verder knutselen.

Bedankt

Ed
 
Ed Stoop zei:
Staan 1 kolom te ver en ik moet ze nog linken
...Ehhh... Dat snap ik niet? Als ik de code run dan staan de vakjes echt netjes in kolom M... En voor wat betreft dat 'linken'... Als je nu 'ns zo'n vakje aanklikt, dan zou je toch in dezelfde regel in kolom G het woord True (of Waar in de nederlandse versie) moeten zien.

Groet, Leo
 
...en als je heel snel al je selectievakjes op True (Waar) wilt zetten, kan je deze code een keertje draaien...;)
Code:
Sub ZetSelectievakjeOpTrue()
Dim c As Range

    For Each c In Range("G2:G367")
        c.Value = True
    Next c

End Sub

Groet, Leo
 
Pfuhhh

Dat dit allemaal kan met dit prog! Zag niet dat ie WAAR in G zette.

Waar staat in de code de link naar in dit geval de kolom G?

Hij zet bij mij de boxes echt in kolom N neer.

Klasse! Bedankt alvast!

Ed
 
Ed Stoop zei:
Waar staat in de code de link naar in dit geval de kolom G?
Dat doet de code via deze regel...
Code:
Selection.LinkedCell = Cells(r + i, k - 6).Address

Hij zet bij mij de boxes echt in kolom N neer
Heb je soms een heeeeele smalle kolom M???

Groet, Leo
 
Smalle M

Ik had inderdaad een hele smalle M. Daar heb ik wel vaker klachten over gehad overigens.

Wil um nu linken naar N, zodat daar de waarde WAAR of ONWAAR komt te staan. Ik vermoed dat de linkcode dan dit wordt: Selection.LinkedCell = Cells(r + i, k - 13).Address

gr

Ed
 
Ed Stoop zei:
Ik vermoed dat de linkcode dan dit wordt: Selection.LinkedCell = Cells(r + i, k - 13).Address
Helaas.... verkeerd vermoeden...:D:D
In 1e instantie stond er '-6'. Dat wil zoveel zeggen als doe zes stapjes vanaf de aangegeven positie (= 'selection') en de 'min' geeft aan dat het naar links moet zijn. Als je dus vanuit M naar N wilt gaan doe je een Offset van 1 kolom. Ofwel je regel wordt...
Code:
Selection.LinkedCell = Cells(r + i, k +1).Address

Groet, Leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan