11. april 2005 - 15:14Der er
16 kommentarer og 1 løsning
VBA: Resize dynamisk 2-dimensionalt array
Hej.
Jeg har lidt problemer med at få ændret størrelsen på et 2-dimensionalt array. Jeg har en helt masse linier som skal læses ind i et array, men jeg ved på forhånd ikke hvor mange linier der er, da der skal manipuleres med linierne.
Jeg opretter array'et som følgende:
Dim myArray() As Variant
Det går fint nok første gang jeg vil sætte størrelsen:
ReDim Preserve myArray(1, 9)
Men derefter kan jeg ikke så lov til at ændre størrelsen på den første dimension til f.eks. 2 i stedet for 1. Jeg kan sagtens ændre størrelsen på den anden dimension.
Hvordan kan jeg ændre størrelsen på den første dimension?
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
Only the upper bound of the last dimension in a multidimensional array can be changed when you use the Preserve keyword; if you change any of the other dimensions, or the lower bound of the last dimension, a run-time error occurs. Thus, you can use code like this:
ReDim Preserve Matrix(10, UBound(Matrix, 2) + 1) But you cannot use this code:
Nå, men det er der ikke noget at gøre ved. Bare træls at skulle til at flytte data over i et nyt array op til flere tusinde gange, så den metode er heller ikke så holdbar.
Har du et forslag til en anden måde man kan gemme data midlertidigt på? De data jeg skal gemme er x antal rækker med hver 9 værdier. Kunne selvfølgelig gemme data i et nyt midlertidigt ark.
Lavede det om sådan så jeg kun gemmer 1 linie ad gangen, og så indsætter jeg de data med det samme i stedet for at løbe hele tekstfilen igennem med det samme. Det giver godt nok en masse skift mellem de 2 filer, men det er der jo ikke så meget at gøre ved.
Ved du hvordan jeg kan få fjernet det sidste linieskift (Chr(10) - Chr(13) kom med ved en fejl) i min strCompDesc streng? At fjerne det sidste tegn i strengen har ingen effekt, og kan jo ikke lave en replace på hele strengen eftersom det jo kun er det sidste linieskift jeg vil fjerne :)
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.