Avatar billede brobaek Nybegynder
11. oktober 2002 - 15:30 Der er 4 kommentarer og
1 løsning

Frame som control array

Jeg har en VBA form med ex. 5 frames. Dem skal jeg så vise enkeltvis vha. en Next/Previous knap.

Problemet er, at man (så vidt jeg ved) ikke i VBA kan lave control arrays. Jeg kan selvfølgelig kalde frame'sne for frame1,...,frame5 men...

Kan man proppe et object ind i en variabel a'la :

Dim i As Byte
Dim strFrame As String
For i = 1 To 5
    strFrame = "Frame" & i
    With strFrame
        .Visible = False
    End With
Next i

Dette virker ikke! Men kan man declare strFrame som noget a'la object.name ??? Eller kan jeg bruge en anden løsning til at dynamisk gennemløbe controller i VBA ?
Avatar billede joern Nybegynder
12. oktober 2002 - 18:06 #1
Hej.

Mener du VBA eller er det en slåfejl?

I VB kan frames godt være control array.

Men din kode ovenfor med For / Next kører jo færdig i et snuptag.  Der skal vel gøres ophold, indtil brugeren vil fortsætte?

Spørgsmålet står uklart for mig.

M.v.h.  Jørn
Avatar billede brobaek Nybegynder
13. oktober 2002 - 10:46 #2
Der står VBA, og derfor er det ikke "et snuptag" ;-)

I VBA kan du ikke oprette contron array (så vidt jeg ved), men der må jo findes en omvej...
Avatar billede joern Nybegynder
14. oktober 2002 - 00:31 #3
Ok - VBA, det anvender jeg ikke.

Men med 'snuptag' mener jeg at løkken kører færdig, da der intet er til at standse den.
Ellers vil det vel fungere med frame & i som navn på rammerne, når de blot hedder sådan.

Men løkken skal jo stoppe, altså 'i' må ikke fortsætte før brugeren bestemmer det.

  command1.click
  frame & i.visible = false
    i=i+1
    if i > 5 then exit sub
  frame & i.visible = true
 
 
  command2.click
  frame & i.visible = false
    i=i-1
  if i<0 then exit sub
  frame & i.visible = true

  Er der ikke en gruppe for VBA-spørgsmål?

M.v.h.  Jørn
Avatar billede brobaek Nybegynder
14. oktober 2002 - 10:15 #4
Som jeg skriver kan du ikke kalde en control der er gemt i en string variabel - prøv evt. selv... Det er præcis det samme i VB, men her kan man komme udenom problemet vha. control arrays.
Avatar billede brobaek Nybegynder
14. oktober 2002 - 12:16 #5
Fandt en løsning... Man kan bruge property'en "controls" for formen. En god finte her er også at bruge "tag" property'en på en kontrol (i dette ex frame controllen).

Dim i As Integer

For i=1 to 5
    If frmMain.Controls.Item(i).Name = "fraPension" & i Then
        frmMain.Controls.Item(i).Visible = True
    End If
Next i
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
Kurser inden for grundlæggende programmering

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