Nejste přihlášen/a.
Mám pole VyslMat, které má 24 sloupců a proměnlivý počet řádků.
V tomto poli se provedou všechny výpočty a teprve přepočítané pole se má vložit zpět do excelu (jinak se v buňkách nepočítá vůbec nic). Problém je v tom, že při zadání příkazu ListS.range("A2:X"&PocRadku).value= VyslMat to spadne na nedostatek paměnit (chyba 7) a to i v případě, že je tam relativně málo řádků (třeba 600). Nevíte prosím někdo, proč a co s tím?
Office 2021 (doma), Microsoft 365 v práci (chování stejné) 64 bit, oba počítače Ryzen 5, 16 GB RAM.
Děkuji
M. Hodek
Již vyřešeno, viz níže.
Napadá mě, jestli to nechce do každé buňky z té oblasti vložit celé pole VyslMat, což by bylo paměťově náročnější. Ale při 600 řádcích a zhruba 20 sloupcích by to nemělo snad mít takový efekt.
(Ani bych nemyslel, že jde takové přiřazení ("implicitní cyklus") ve VBA udělat, myslel bych si, že se to musí v cyklu buňku po buňce, takhle dohromady vím, že to umí Matlab a tam právě může vzniknout, co jsem popisoval, pokud nesouhlasí dimenze těch dvou polí (nebo to skončí chybou, že nesouhlasí dimenze). No ale moje zkušenosti končí u verze 2003.)
Co to zkusit s ještě menším počtem řádků, třeba 10 nebo 20, to už nemůže dát out of memory ani omylem. Případně zkusit to samé cyklem (dva vnořené cykly), to se dá aspoň krokovat.
Ještě před tím příkazem bych dal zarážku (breakpoint) a podíval se (ve watch window, česky tomu VBA říkal kukátko, to se mi moc líbilo), co je v tom poli VyslMat, jestli tam je, co si myslíte, že tam je a jestli to pasuje na cílovou oblast.
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.