Automatische plaatsen checboxen gaat 60x goed bij 61 fout melding

Status
Niet open voor verdere reacties.

MantsjeKlaas

Gebruiker
Lid geworden
5 mei 2004
Berichten
34
Beste mensen,

ik heb de volgende code lopen
Code:
Private Sub VullenForm()
Dim RijX As Integer
Dim RijY As Integer
Dim Wijder As Integer
Dim Kleur As String
Dim Teller As Integer
Rood = &HFF&
Blauw = &HFF0000
Zwart = &H80000012
Wijder = 205
Teller = 0
lblPlus.ForeColor = Blauw
lblPoeisz.ForeColor = Rood
lblBeide.ForeColor = Zwart
For I = 7 To 200
    Waarde = Worksheets("Blad1").Range("H" & I).Value
    If Waarde = ComboBox1.Text Then
        If Worksheets("Blad1").Range("F" & I).Value <> "" Then
            Poeisz = True
            Kleur = Rood
        Else: Poeisz = False
        End If
        If Worksheets("Blad1").Range("G" & I).Value <> "" Then
            Plus = True
            Kleur = Blauw
        Else: Plus = False
        End If
        If Poeisz = True And Plus = True Then Kleur = Zwart
        
        Select Case Teller
        Case 0 To 14
            RijX = 0
            RijY = 0
            Me.Width = 300
        Case 15
            RijX = Wijder
            RijY = 15
            Me.Width = 420
        Case 16 To 29
            RijX = Wijder
            RijY = 15
        Case 30
            RijX = Wijder * 2
            RijY = 30
            Me.Width = Me.Width + Wijder
        Case 31 To 44
            RijX = Wijder * 2
            RijY = 30
        Case 45
            RijX = Wijder * 3
            RijY = 45
            Me.Width = Me.Width + Wijder
        Case 46 To 59
            RijX = Wijder * 3
            RijY = 45
        Case 60
            RijX = Wijder * 4
            RijY = 60
            Me.Width = Me.Width + Wijder
        Case 61 To 74
            RijX = Wijder * 4
            RijY = 60
        Case 75
            RijX = Wijder * 5
            RijY = 75
            Me.Width = Me.Width + Wijder
        Case 76 To 89
            RijX = Wijder * 5
            RijY = 75
        End Select
        Set ChkBox(Teller) = UserForm4.Controls.Add("Forms.CheckBox.1")
        With ChkBox(Teller)
            .Name = ChkBox(Teller)
            .Top = (Teller - RijY) * 15 + 55
            .Left = 10 + RijX
            .Width = 170
            .ForeColor = Kleur
            .Caption = Worksheets("Blad1").Range("B" & I).Value & " " & Worksheets("Blad1").Range("C" & I).Value
        End With
        Set TxtBox(Teller) = UserForm4.Controls.Add("Forms.textbox.1")
        With TxtBox(Teller)
            .Name = TxtBox(Teller)
            .Top = (Teller - RijY) * 15 + 55
            .Left = 180 + RijX
            .Width = 20
            .TextAlign = fmTextAlignCenter
            .Text = "1"
        End With
        Teller = Teller + 1
        If Teller = 61 Then
            Teller = 75
        End If
        Label1.Caption = Teller
    Else
    End If
Next I

End Sub

Het gaat als volgt elk product dat op "Blad1" voorkomt, en voorkomt in kolom "H" moet worden geplaatst op het Formulier.
Elke keer wordt hiervoor een Checkbox geplaatst. Na 15 checkboxen wordt het formulier wijder gemaakt. Dit gaat goed tot nummer 60.
Hierna krijg ik de melding Fout 9 tijdens uitvoering: Het subscript valt buiten het bereik.
Wanneer ik de teller waarde hoger maak dan 61 blijft de melding komen.
Is er iemand die mij kan vertellen wat er mis gaat

Groet MantsjeKlaas
 
Plaats ook even je document.
 
Beste mensen,

Ik heb het probleem al opgelost.

Code:
Dim RijX As Integer
Dim RijY As Integer
Dim Wijder As Integer
Dim Kleur As String
[COLOR="#FF0000"]Dim chkBox As MSForms.CheckBox
Dim txtBox As MSForms.TextBox[/COLOR]
Rood = &HFF&
Blauw = &HFF0000
Zwart = &H80000012
Wijder = 205
Teller = 0
lblPlus.ForeColor = Blauw
lblPoeisz.ForeColor = Rood
lblBeide.ForeColor = Zwart
For i = 7 To 200
    Waarde = Worksheets("Blad1").Range("H" & i).Value
    If Waarde = ComboBox1.Text Then
        If Worksheets("Blad1").Range("F" & i).Value <> "" Then
            Poeisz = True
            Kleur = Rood
        Else: Poeisz = False
        End If
        If Worksheets("Blad1").Range("G" & i).Value <> "" Then
            Plus = True
            Kleur = Blauw
        Else: Plus = False
        End If
        If Poeisz = True And Plus = True Then Kleur = Zwart
        
        Select Case Teller
        Case 0 To 14
            RijX = 0
            RijY = 0
            Me.Width = 300
        Case 15
            RijX = Wijder
            RijY = 15
            Me.Width = 420
        Case 16 To 29
            RijX = Wijder
            RijY = 15
        Case 30
            RijX = Wijder * 2
            RijY = 30
            Me.Width = Me.Width + Wijder
        Case 31 To 44
            RijX = Wijder * 2
            RijY = 30
        Case 45
            RijX = Wijder * 3
            RijY = 45
            Me.Width = Me.Width + Wijder
        Case 46 To 59
            RijX = Wijder * 3
            RijY = 45
        Case 60
            RijX = Wijder * 4
            RijY = 60
            Me.Width = Me.Width + Wijder
        Case 61 To 74
            RijX = Wijder * 4
            RijY = 60
        Case 75
            RijX = Wijder * 5
            RijY = 75
            Me.Width = Me.Width + Wijder
        Case 76 To 89
            RijX = Wijder * 5
            RijY = 75
        End Select
        [COLOR="#FF0000"]Set chkBox = Me.Controls.Add("Forms.Checkbox.1", "Checkbox" & Teller)
            With chkBox
                .Name = "Checkbox" & Teller[/COLOR]
                .Top = (Teller - RijY) * 15 + 55
                .Left = 10 + RijX
                .Width = 170
                .ForeColor = Kleur
                .Caption = Worksheets("Blad1").Range("B" & i).Value & " " & Worksheets("Blad1").Range("C" & i).Value
            End With
        [COLOR="#FF0000"]Set txtBox = UserForm4.Controls.Add("Forms.textbox.1", "TextBox" & Teller)
            With txtBox
                .Name = "TextBox" & Teller[/COLOR]
                .Top = (Teller - RijY) * 15 + 55
                .Left = 180 + RijX
                .Width = 20
                .TextAlign = fmTextAlignCenter
                .Text = "1"
            End With
        Teller = Teller + 1
        Label1.Caption = Teller
    Else
    End If
Next i

Ik heb rood gemaakt wat ik verandert heb.
Wanneer je chkBox() gebruikt kun je maximaal 60 items aanmaken dit geldt ook txtBox().
Door de manier die ik hier boven heb geplaatst heb je geen maximaal aantal meer

Groet MantsjeKlaas
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan