Gå til innhold

Gjøre For-Next mer praktisk


Anbefalte innlegg

Er det noen som kan klare å få gjort denne koden litt enklere for meg? Jeg tenker da å gjøre sånn at jeg kan "bygge mange fler hakk" med bare å angi et tall. Sånn at jeg kan få ut MsgBox(i & j & k & k & l & m & n & o & p) uten å legge til så mange For-Next setninger.

 

        For i As Integer = 0 To 5
           MsgBox(i)
           For j As Integer = 0 To 5
               MsgBox(i & j)

               For k As Integer = 0 To 5
                   MsgBox(i & j & k)

                   For l As Integer = 0 To 5
                       MsgBox(i & j & k & k)
                   Next
               Next
           Next
       Next

 

Edit: En liten leif

Endret av inherit
Lenke til kommentar
Videoannonse
Annonse

Du må bruke rekursive funskjoner/subrutiner. Rekursive funskjoner/subrutiner kaller seg selv inntil et kriterium er nådd, f.eks. antall nivåer i ditt tilfelle.

 

sub Start(iNumberOfLevels as integer, iCountPerLevel as integer)
    call ProcessLevel(1,iCountPerLevel,iNumberOfLevels,"")
end sub

sub ProcessLevel(iCurrentLevel as integer, iCountPerLevel as integer, iMaxLevel as integer, sParentCountString as string)
dim i as integer
dim iNextLevel as integer
dim sCountString as string

iNextLevel=iCurrentLevel+1

for i=0 to iCountPerLevel
    if sParentCountString="" then
         sCountString= sParentCountString & i
    else
         sCountString= sParentCountString & "," & i
    end if

    debug.print sCountString

    if iCurrentLevel<iMaxLevel then
         call ProcessLevel(iNextLevel,iCountPerLevel,iMaxLevel,sCountString)
    end if
next i
end sub

 

Denne koden kan du f.eks. paste inn i en form, og kalles fra en ved et klikk på en knapp slik

 

Private Sub Command1_Click()
Call Start(2, 3)
End Sub

 

som gir dette resultatet i debug vinduet

0
0,0
0,1
0,2
0,3
1
1,0
1,1
1,2
1,3
2
2,0
2,1
2,2
2,3
3
3,0
3,1
3,2
3,3

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...