Avatar billede gider_ikke_mere Nybegynder
14. marts 2004 - 12:50 Der er 4 kommentarer og
1 løsning

Ændre Caption på 100 Checkbokse

Jeg har 100 checkbokse i en form. Caption: "side 1", "side 2", ... "Side 100" Ved at skrive et tal i en tekstbox, f.eks. 20 skal Caption, ved tryk på en CommandButton, i alle 100 Checkbokse ændres til "Side 20", "side 21", ... "Side 120". Samtidigt skal alle checkbokse.value kunne sættes til "true" ved at sætte flueben i CkeckBox nr. 101 uden at jeg skal skrive:
    CheckBox1.Value = False
    CheckBox2.Value = False
osv. (Do - Loop el. lign.)
14. marts 2004 - 13:09 #1
Her er et par rutiner, som du kan lege med:

Private Sub DenDerKnap_Click()
    Dim lCount As Long

    If IsNumeric(TextBox1.Text) Then
        For lCount = CLng(TextBox1.Text) To CLng(TextBox1.Text) + 100
            Me.Controls("CheckBox" & CStr(lCount)).Caption = "Side " & CStr(lCount)
        Next lCount
    End If
End Sub


Private Sub CheckBox101_Change()
    Dim lCount As Long
   
    For lCount = 1 To 100
        Me.Controls("CheckBox" & CStr(lCount)).Value = CheckBox101.Value
    Next
End Sub
Avatar billede gider_ikke_mere Nybegynder
14. marts 2004 - 16:11 #2
Hvis jeg skrev: 50 blev kun CkeckBox 50 til 100 omdøbt og derefter fik jeg en debug fejl da CheckBox 101 til 149 selvfølgelig ikke eksisterede!

Løsningen var:
Private Sub DenDerKnap_Click()
    Dim lCount As Long
        Dim TrakFra As Long
        Dim Minus1 As Long
        Minus1 = CLng(TextBox1.Text) - 1

    If IsNumeric(TextBox1.Text) Then
        For lCount = CLng(TextBox1.Text) To CLng(TextBox1.Text) + 99
       
        TrakFra = lCount - Minus1
       
            Me.Controls("CheckBox" & CStr(TrakFra)).Caption = "Side " & CStr(lCount)
        Next lCount
    End If

End Sub

Næste problem er at når jeg nu åbner min form for anden gang er Caption på alle CheckBox'es tilbage ved de gamle værdier. Jeg kan selvfølgelig bare også sætte ovenstående til min Form_Activate, men er der en bedre løsning så Caption huskes?
14. marts 2004 - 16:26 #3
Caption's huskes ikke når de skiftes i 'Runtime'

Men du kan evt. linke TextBox1 til en celle, så tallet gemmes der, så bliver din rutine kørt ved åbning igen......
Avatar billede gider_ikke_mere Nybegynder
14. marts 2004 - 18:22 #4
Det er også meningen at TextBox1 skal linkes til en celle og det er også gjort, men jeg vil stadig gerne undgå at skulle sætte koden 2 steder!
14. marts 2004 - 18:30 #5
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    RefreshCheckBoxCaptions
End Sub

Private Sub UserForm_Initialize()
    RefreshCheckBoxCaptions
End Sub

Private Sub RefreshCheckBoxCaptions()
    Dim lCount As Long

    If IsNumeric(TextBox1.Text) Then
        For lCount = CLng(TextBox1.Text) To CLng(TextBox1.Text) + 99
            Me.Controls("CheckBox" & CStr(lCount - CLng(TextBox1.Text) - 1)) _
                .Caption = "Side " & CStr(lCount)
        Next lCount
    End If
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB