Stránka 1 z 1

VBA Excel - ReDim Preserve

Napsal: 22 bře 2011 21:11
od vonv
Prosím o radu ohledně polí:
- mám dynamické "pole()"
- nevím, kolik řádků bude pole mít - řádek chci přidat až po splnění jistých podmínek
- představa je, že nakonec pole bude jako tabulka o rozměrech 1000 řádků a 12 sloupců [pole(1000,12)], a po pravdě budu pole taky vkládat jako tabulku do "dim oblast as range" tímto způsobem: set oblast.value = pole

Původní představa byla, že u pole budu měnit počet řádků a sloupce budou pořád stejné, tedy: pole(početřádků, 12). Jak jsem říkal, chci řádek přidat až po splnění jistých podmínek - jakmile se podmínka splní, rozšířím si rozměr řádků pole způsobem:

ReDim Preserve pole(ubound(pole,1)+1, 12).

Ale narazil jsem na problém "subscript out of range" a zjistil jsem, že při použití Preserve mohu měnit jen poslední rozměr pole - v tomto pojetí rozměr sloupců. Mimochodem, tohle pan Walkenbach zapomněl v jinak dobré knize uvést :-)

Poraďte mi, prosím, jak z toho ven, co je nejlepší řešení(?):
a) překopat všechny pole tak, že prohodím rozměry - to jde, ale už jsem toho hodně napsal a strávím nad tím spoustu času
b) před rozšířením pole pomocí Preserve pole přetransponovat (předpokládám, že to jde - napadlo mě to až teď při psaní tohoto dotazu)
c) uložit pole do listu, předimenzovat bez Preserve a pak zase načíst zpět
d) ... poraďte další způsob(y) nebo metody

Díky moc.
P.S. nejsem programátor, tak mě nesekýrujte, ale poraďte mi :-)
A na dotaz, proč jsem rovnou neuvažoval rozměry pole obráceně: pole(sloupce,řádky), tak je to proto, že jsem vycházel z označení oblastí, kdy se napřed taky uvádí řádky a pak sloupce - krom toho jsem chtěl pole vkládat jedním příkazem jak jsem naznačil.