..|| Blog || Produkti/Storitve || MExcel || MDodatki || 300 nasvetov ||..

"Dinamično" poimenovanje podatkov in ustavitev mak

Pomoč pri izdelavi makrov

"Dinamično" poimenovanje podatkov in ustavitev mak

OdgovorNapisal/-a jure121 » Po sep 07, 2009 12:38 pm

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
jure121
 
Prispevkov: 19
Pridružen: Sr nov 26, 2008 4:29 pm



Matjazev.NET
 

OdgovorNapisal/-a admin » Po sep 07, 2009 12:46 pm

Č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:
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
admin
Site Admin
 
Prispevkov: 3525
Pridružen: Sr jul 20, 2005 10:06 pm


Vrni se na VBA

Kdo je prisoten

Po forumu brska: 0 registriranih uporabnikov in 2 gostov

cron