» »

[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.

darkolord ::

Workbook_SheetChange. Eden od parametrov je "Target", kjer piše kaj se je spremenilo

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?

darkolord ::

Zakaj ne popraviš tistega makra?

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

nevone ::

Either we will eat the Space or Space will eat us.

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

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

Zgodovina sprememb…

  • spremenil: mmaestro ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

excel+visual basic

Oddelek: Pomoč in nasveti
101470 (1357) švrk
»

[Excel]Kako izvleči vrednost?

Oddelek: Programiranje
223657 (3380) Mobidick
»

[Excel]Vrednost celice = ime dokumenta

Oddelek: Programska oprema
314543 (3965) veteran
»

[Excel] Deljenje vrednosti celice in izpis rezultata

Oddelek: Programiranje
102534 (2425) Zupa852
»

Prosim za pomoč pri VBA

Oddelek: Programiranje
351970 (1773) apachee

Več podobnih tem