Pozdravljeni!
Napisano imam proceduro za izvajanje interakcije.
Makro zajema podatke npr. v stolpcih a:f, vmesne rezultate piše v stolpce g:l, končni rezultat posameznega koraka pa v stolpec m.
Med izvajanjem makra, se torej vseskozi spreminja velika količina podatkov, ki pa se ves čas zapisujejo v celice. Izračunavanje traja kar nekaj minut, kar pa bi rad skrajšal. Zanima me, ali bi se makro izvajal hitreje, če vmesne rezultate ne bi izpisoval v celice, ampak bi jih program le shranil v spomin.
Če je odgovor "ja, mogoče je", me zanima kako poimenovati posamezno vrednost. Npr.: kako določiti, da bo podatek, ki se nahaja v stolpcu "A" in v vrstici "i" imenoval "Ai"
Primer
Stolpec A, vrstica 1 = ime podatka A1
Stolpec A, vrstica 2 = ime podatka A2
Stolpec A, vrstica 3 = ime podatka A3
...
Stolpec A, vrstica i = ime podatka Ai
Če pa je odgovor "ni mogoče" me zanima, kako ustaviti proces izvajanja (z namenom povečati korak interakcije in s tem skrajšati čas izvajanja makra) brez nadležnih Error sporočil (kar se zgodi, če makro ustavim s tipko Esc ali Ctrl+break.
Upam, da sem dovolj dobro objasnil v čem je problem in da mi boste znali pomagati.
Že v naprej hvala
"Dinamično" poimenovanje podatkov in ustavitev mak
Če vrednosti ne pišete v celice potem bo makro hitrejši to je zagotovo. Koliko hitrejši bo pa je zelo odvisno od vašega algoritma.
Vendar pa v algoritmu ne boste vrednosti shranjevali v posamezne spremenljivke, temveč v polje (ARRAY) v vašem primeru pač potrebujete dvodimenzionalno polje kamor vrednosti shranjujete podobno kot v celice. Primer:
Vendar pa v algoritmu ne boste vrednosti shranjevali v posamezne spremenljivke, temveč v polje (ARRAY) v vašem primeru pač potrebujete dvodimenzionalno polje kamor vrednosti shranjujete podobno kot v celice. Primer:
Koda: Izberi vse
Option Explicit
Sub test2Dpolja()
Dim polje(2, 4) As Integer
polje(0, 0) = 1
polje(0, 1) = 2
polje(0, 2) = 3
polje(0, 3) = 4
polje(0, 4) = 5
Dim i, j
For i = 0 To 4
polje(1, i) = 2 * i
polje(2, i) = 8 * i
Next
For j = 0 To 2
For i = 0 To 4
Debug.Print polje(j, i);
Next
Debug.Print ""
Next
End Sub
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator