VBA: Kan man gruppere handlinger for eksempelvis knapper?
Hej!
Jeg har en masse knapper i en form. For hver knap skal der ske en handling. Mange af knapperne åbner den samme form, blot med forskellige værdier i de labels formen indeholder. Desuden hedder knapperne det samme, bortset fra et lille indeks nummer til sidst (cmdButton1, cmdButton2, cmdButton3 ...)
I stedet for at have 50 af disse:
Private Sub cmdButton_Click()
'handling
End Sub
kan man så lave noget smart, så jeg sparer plads i koden???
Du skal oprette et array af knapper. Opret første knap. Tag en kopi og Sæt ind. Du bliver nu spurgt om du vil oprette et array. Sig ja, og vælg Sæt Ind, det antal gange du skal have knapper.
Dobbeltklik på en knap og skriv koden:
Private Sub Command1_Click(Index As Integer) Dim Valg As Integer Valg = Index Select Case Valg Case 0: MsgBox "0" Case 1: MsgBox "1" End Select End Sub
Det lyder rigtig smart! Men vil det virke i Excel VBA? Synes jeg har kopieret mange knapper, og den har aldrig spurgt om den skulle oprette et array...
Jeg var ikke lige opmærksom på, at det var VBA. I stedet kunne du jo oprette en SUB og en PUBLIC variabel Public MyVar as Integer Private Sub Command1_Click() MyVar = 1 DoSomeThing End Sub
Sub DoSomeThing() Select Case MyVar Case 0: MsgBox "0" Case 1: MsgBox "1" End Select End Sub
Det er den løsning jeg kører med i øjeblikket. Jeg tænkte bare på, om der var en måde at gøre det på, således at jeg undgik at opskrive alle knapperne. Dvs. indeksere knapperne eller sådan noget, så det kun fylder et par linier.
Ved ikke om jeg taler i tåger... Ved ikke lige hvordan jeg ellers skal forklare det.
Også google med søgning på: "VBA" array control class kan anbefales.
Håber det hjalp dig lidt videre.
Synes godt om
Ny brugerNybegynder
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.