Avatar billede flash_84 Nybegynder
25. marts 2008 - 15:11 Der er 6 kommentarer

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???


hilsen flash
Avatar billede sorenstrom Nybegynder
25. marts 2008 - 15:51 #1
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
Avatar billede flash_84 Nybegynder
25. marts 2008 - 20:42 #2
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...
Avatar billede sorenstrom Nybegynder
26. marts 2008 - 17:43 #3
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
Avatar billede flash_84 Nybegynder
02. april 2008 - 09:04 #4
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.
Avatar billede learningvba Nybegynder
02. april 2008 - 11:14 #5
Har du overvejet om Tag er en mulighed?

Snuppet fra en hjælpefil:
Remarks

Use the Tag property to assign an identification string to an object without affecting other property settings or attributes.

For example, you can use Tag to check the identity of a form or control that is passed as a variable to a procedure.
Avatar billede learningvba Nybegynder
15. april 2008 - 09:45 #6
Glem ovenstående kommentar vedr. Tag for netop din situation (kan dog bruges i andre situationer)

Kig f.eks. på:
http://proofficedev.com/blog/2007/02/26/control-arrays-in-vba/

http://www.tek-tips.com/faqs.cfm?fid=4976

http://www.tek-tips.com/viewthread.cfm?qid=1446884&page=9

Også google med søgning på:
"VBA" array control class
kan anbefales.

Håber det hjalp dig lidt videre.
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

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