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

VBA code begrijpen en veranderen

Status
Niet open voor verdere reacties.

schuurar

Gebruiker
Lid geworden
15 aug 2009
Berichten
417
uit een andere vraag op het forum heb ik wat zitten "stelen" voor mijn eigen bestand.
http://www.helpmij.nl/forum/showthread.php/813870-56-commandbuttons-benoemen

Nu loop ik tegen iets aan wat ik niet snap :confused: (moet nog meer leren)
In de volgende code word er een button aangemaakt en gekeken waar de info vandaan gehaald moet worden.
Nu wil ik het bereik aanpassen maar daar gaat het mis ?!
Dit is de code :
Code:
Private Sub CommandButton9_Click()
 While opslag.Count
        Me.Controls.Remove (opslag(opslag.Count).kn.Name)
        opslag.Remove (opslag.Count)
    Wend
    knopmatrix Me, Sheets("degen").[c50000].End(xlUp).Row, 5, 84, 35, 12, 190, 42
    For Each knop In opslag
        i = i + 1
        knop.kn.Caption = Sheets("degen").Cells(i, 2)
    Next knop
    updatebox
End Sub

Het bereik staat hier dus in de sheet "degen" en als bereik heel kolom C (als ik het goed begrijp)
Ik krijg nu dus eerst lege buttons tot hij bij C7 aankomt
Mijn bereik is dus C7 t/m C 28. Nu heb ik al geprobeerd om het als C7:C28 neer te zetten maar dat doet hij niet.

Wie kan mij leren wat ik fout doe ?
Bedankt vast.
 
Laatst bewerkt:
Je moet een beginwaarde aan i geven omdat Cells(i,2) telkens de waarde uit cel C & i haalt,
Ik kan wel niet zien of je genoeg buttons/waarden hebt in je bereik C7:C28:

Code:
Private Sub CommandButton9_Click()
    While opslag.Count
        Me.Controls.Remove (opslag(opslag.Count).kn.Name)
        opslag.Remove (opslag.Count)
    Wend
    knopmatrix Me, Sheets("degen").[c50000].End(xlUp).Row, 5, 84, 35, 12, 190, 42
[B][/B][COLOR="#FF0000"]I = 6[/COLOR]    
    For Each knop In opslag
        i = i + 1
        knop.kn.Caption = Sheets("degen").Cells(i, 2)
    Next knop
    updatebox
End Sub
 
Nou laat ik me bestand op de zaak liggen :-( sukkel
Ik ga morgen kijken of ik er uit kom.
Bedankt voor de hulp alvast!!!!
 
Goedemorgen,

Zit al ff te klooien nu maar kom er niet uit.
Ik heb die regel erbij geplakt en nu begint hij wel op de juiste regel maar nu maakt hij er na elke button een lege button bij.
Ik heb meerdere buttons die uit andere bladen gegevens moeten halen en die staan niet overal op de zelfde plaats.
Ik moet dus voor elke button aangeven uit welke cellen hij de gegevens moet halen.

Code:
Private Sub CommandButton9_Click()
    While opslag.Count
        Me.Controls.Remove (opslag(opslag.Count).kn.Name)
        opslag.Remove (opslag.Count)
    Wend
    knopmatrix Me, Sheets("degen").[c50000].End(xlUp).Row, 5, 84, 35, 12, 190, 42
I = 6    
    For Each knop In opslag
        i = i + 1
        knop.kn.Caption = Sheets("degen").Cells(i, 2)
    Next knop
    updatebox
End Sub

Private Sub CommandButton8_Click()
    While opslag.Count
        Me.Controls.Remove (opslag(opslag.Count).kn.Name)
        opslag.Remove (opslag.Count)
    Wend
    knopmatrix Me, Sheets("Overige").[b50000].End(xlUp).Row, 5, 84, 35, 12, 190, 42
I = 1
    For Each knop In opslag
        i = i + 1
        knop.kn.Caption = Sheets("Overige").Cells(i, 2)
    Next knop
    updatebox

End Sub

Uit het tabblad "overige" moet hij bv de gegevens halen uit cel B2 t/m B20

waarom maakt hij nu een lege button aan ?
 
Nog even verder zitten klooien en ben er uit gekomen nu!!
Het zat niet in dit stukje code maar in de knopmatrix code.
Code:
Private Sub knopmatrix(Sender As Object, Aantal As Long, Breedte As Long, XSize As Long, YSize As Long, Spacing As Long, Top As Long, Left As Long)
    Dim nknop As New knoppen
    For i = 0 To Aantal - 2  [COLOR="#FF0000"]<<-- was 1 heb ik op 2 gezet[/COLOR]
        Set nknop = New knoppen
        Set nknop.kn = Sender.Controls.Add("Forms.CommandButton.1")
        Set nknop.parent = Sender
        nknop.kn.Width = XSize
        nknop.kn.Height = YSize
        nknop.kn.Left = Left + (i Mod Breedte) * (XSize + Spacing)
        nknop.kn.Top = Top + Fix(i / Breedte) * (YSize + Spacing)
        nknop.kn.Name = "knop" & i
        opslag.Add Item:=nknop, Key:="knop" & i
    Next i
End Sub

Nu werkt het prima !!
Bedankt voor de hulp wederom !!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan