02. juni 2005 - 12:37Der er
10 kommentarer og 1 løsning
Definition af array
Jeg vil gerne lave et array af typen:
Dim array(antal) as variant
array(0)="xxx" array(1))"yyy" osv. så man selv kan fylde flere elementer på undervejs.
Problemet er, at antallet af elementer i "Dim array(antal)" skal være kendt. Kan det ikke lade sig gøre på en måde ikke at definere antallet af elementer på forhånd?
Nu kan jeg godt se, hvad du mener, men det lever ikke rigtigt op til kravene. Hvis man alligevel skal tilføje tre linjer pr. element, kan man lige så godt ændre antallet i "Dim array(antal)", hvis der skal tilføjes nyt.
Ups - du må IKKE kalde et array for "array" - der er et reserveret navn. Og jeg har en tæller for meget med.
Copy-paste nedenstående - det virker, og viser hvordan du kan bruge et dynamisk array:
Dim Myarray() As Variant 'Angivet UDEN størrelse
Dim i As Long For i = 0 To 4 ReDim Preserve Myarray(i) Myarray(i) = "Element nr " & i Next i
i = UBound(Myarray) + 1 'Ubound() returnerer arryets aktuelle størrelse ReDim Preserve Myarray(i) 'Forøger størrelsen med EN Myarray(i) = "Endnu et element" 'Tilføjer et element
For i = 0 To UBound(Myarray) MsgBox "Test af arrayindhold, i = " & i & ": " & Myarray(i) Next i
Martin: Med kabbak's forslag, skal der tilføjes tre linjer pr. nyt element. Det samme ser ud til at være tilfældet for dit forslag, hvis jeg forstår det rigtigt:
...er lettere at tilføje et nyt element, da personen blot skal tilføje et nyt liste=liste & "," & "kkk" under de andre, og så kører det. Han ville gerne have, at han blot kunne tilføje
Martin: Med kabbak's forslag, skal der tilføjes tre linjer pr. nyt element. Det samme ser ud til at være tilfældet for dit forslag, hvis jeg forstår det rigtigt:
...er lettere at tilføje et nyt element, da personen blot skal tilføje et nyt liste=liste & "," & "kkk" under de andre, og så kører det. Han ville gerne have, at han blot kunne tilføje
Man kan sagtens gøre som du beskriver, kriskrisk. Et alternativ er her. kræver 2 linier. Arrayet er dimensioneret tilpas stort og først efter at alle elementer er lagt ind, bliver de redimensioneret igen.
Sub ArrayInput() Dim arr_liste() ReDim arr_liste(100) arr_liste(i) = "xxx" i = i + 1 arr_liste(i) = "yyy" i = i + 1 arr_liste(i) = "zzz" i = i + 1 arr_liste(i) = "kkk"
ReDim Preserve arr_liste(i)
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.