Forum » Programiranje » [VB, Excel] Lociranje celice
[VB, Excel] Lociranje celice
mmaestro ::
Imam sledeč problem. Imam datoteko, ki se ves čas spreminja preko makroja dobiva v celice neke podatke, ki se kar pogosto spreminjajo, jest pa bi mogel te podatke zdaj zapisat v bazo.
Zapisati v bazo znam, ne znam pa locirati celice, katera se je spremenila, kajti ne obstaja noben tak ivent s katerim bi si lahko pomagal. Ker če celice spreminjaš ročno potem si lahko pomagaš z inventi tako pa ne vem kako bi si. Probal sem z Workbook_racalculate al nekaj takega sam ne znam locirati katera celica se je spremenila.
Bi mi lahko kdo kako pomagal?
Lepo prosim.
Zapisati v bazo znam, ne znam pa locirati celice, katera se je spremenila, kajti ne obstaja noben tak ivent s katerim bi si lahko pomagal. Ker če celice spreminjaš ročno potem si lahko pomagaš z inventi tako pa ne vem kako bi si. Probal sem z Workbook_racalculate al nekaj takega sam ne znam locirati katera celica se je spremenila.
Bi mi lahko kdo kako pomagal?
Lepo prosim.
mmaestro ::
Ja to vem da je tam target, sam če npr spreminjaš vsebino ročno se pravi, da vpišeš neko vrednost pol se sproži event, če pa se ti to spreminja prek makroja pa se noče prožit ne vem zakaj. Ma kdo kakšen predlog?
mmaestro ::
Zdaj ko sem se poglobil v tisti "makro" sem ugotovil da sploh nič ne dela pač pa se podatki dobivajo direkt iz nekega programa, in sicer tako da je v neko celico vpisana npr sledeča formula =FXTREK|Bid!EURUSD, tako da ne morem uporabiti eventov za spreminjanje celice, ker se te v bistvu ne spreminjajo al kako naj rečem vedno je ko se postaviš nanjo v polju za formulo fx napisano to kar sem napisal (=FXTREK|Bid!EURUSD) ko pa se postaviš npr v drugo celico pa vidiš noter dejansko vrednost za to. Upam da vsaj približno razumete kaj sem hotel povedat.
Torej, kako bi ulovil te cifre, ki se spreminjajo s kakšnim eventom al kakor koli. Edini event kateri se proži je Private Sub Worksheet_Calculate() sam nima nobenega parametra tako da ne vem kako bi lahko lociral celico katera se je zadnja spremenila. To bi nekako nujno moral naredit sam ne vem kako.
Lepo prosim koga za kakšno pomoč oz nasvet.
LP
Torej, kako bi ulovil te cifre, ki se spreminjajo s kakšnim eventom al kakor koli. Edini event kateri se proži je Private Sub Worksheet_Calculate() sam nima nobenega parametra tako da ne vem kako bi lahko lociral celico katera se je zadnja spremenila. To bi nekako nujno moral naredit sam ne vem kako.
Lepo prosim koga za kakšno pomoč oz nasvet.
LP
mmaestro ::
Bi mi mogoče kdo, ki je bolj domač v temu VBAju kot jest pomagal tole naredit, ker ne razumem čist dobro tega kar je napisal človek DCFS na prejšnjem linku.
I think you need
Application.Caller.Address
Should do the trick ?
Define a function MyRecorder that takes a single argument, and for each cell you want to monitor simply say
=MyRecorder (CellRef)
Your code is now called every time that cell changes, and can trivially get the address of the cell.
The overhead from this is pretty low.
Torej kako bi naredil,da bi lovil katere celice se psreminjajo, če je noter formula oz kako naredil to kar je napisal ta tip in nenazadnje kako bi dobil ven vrednost, ker predvidevam da če vzamem property value, da dobim noter napisano formulo.
Najlepša hvala za pomoč že vnaprej.
LP
I think you need
Application.Caller.Address
Should do the trick ?
Define a function MyRecorder that takes a single argument, and for each cell you want to monitor simply say
=MyRecorder (CellRef)
Your code is now called every time that cell changes, and can trivially get the address of the cell.
The overhead from this is pretty low.
Torej kako bi naredil,da bi lovil katere celice se psreminjajo, če je noter formula oz kako naredil to kar je napisal ta tip in nenazadnje kako bi dobil ven vrednost, ker predvidevam da če vzamem property value, da dobim noter napisano formulo.
Najlepša hvala za pomoč že vnaprej.
LP
smetko ::
Vic njegovega trika je v tem da če imaš na primer neko funkcijo v celici A1 potem v velico A2 vstaviš funkcijo =MojaFunkcija(A1). To funkcijo definiraš podobno kot procedure. In vsakič ko se spremeni v vrednost v celici A1 se posledični tudi kliče funkcija v celici A2.
No comment
mmaestro ::
Se pravi če prav razumem v VBAju kreiraš funkcijo:
Public Function MojaFunkcija(Target As Range)
MsgBox "Sprememba" & Err.Description, vbOKOnly, "Error"
End Function
Sam kako potem pokličeš to funkcijo v celici A2, ker če napišeš =MojaFunkcija(A1) ti napiše #IME? Torej kako poklicati funkcijo da bo delalo?
EDIT: Sem pogruntal kako, to funkcijo moreš deklarirati v modulu.
LP
Public Function MojaFunkcija(Target As Range)
MsgBox "Sprememba" & Err.Description, vbOKOnly, "Error"
End Function
Sam kako potem pokličeš to funkcijo v celici A2, ker če napišeš =MojaFunkcija(A1) ti napiše #IME? Torej kako poklicati funkcijo da bo delalo?
EDIT: Sem pogruntal kako, to funkcijo moreš deklarirati v modulu.
LP
Zgodovina sprememb…
- spremenil: mmaestro ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | excel+visual basicOddelek: Pomoč in nasveti | 1569 (1456) | švrk |
» | [Excel]Kako izvleči vrednost?Oddelek: Programiranje | 3800 (3523) | Mobidick |
» | [Excel]Vrednost celice = ime dokumentaOddelek: Programska oprema | 4795 (4217) | veteran |
» | [Excel] Deljenje vrednosti celice in izpis rezultataOddelek: Programiranje | 2649 (2540) | Zupa852 |
» | Prosim za pomoč pri VBAOddelek: Programiranje | 2112 (1915) | apachee |