» »

Prosim za pomoč pri VBA

Prosim za pomoč pri VBA

Oki_1 ::

Kdo je pripravljen pomagati mi napisati program v VBA za zgodovino.Če se v celici spremeni neka vrednost mora VBA povedati kdaj je to bilo.
Prosim pomagajte......seveda proti plačilu se razume.

Hvala.

apachee ::

V katerem okolju to delaš? Predvidevam da v Excel - u ali pa mogoče Accessu?
You can't win without The Finn!

Oki_1 ::

Ja,EXCEL. Imam namreč krmilnik povezan z računalnikom.Vsa komunikacija poteka preko EXCELA.Vse imam že napisano sedaj pa mi je ostala le zgodovina dogajanj.tukaj pa sem prekratek.

apachee ::

A pa sploh poznaš oz. znaš kaj kako se programira v VBA v Excelu? Predvidevam da ne, ampak vseeno.
You can't win without The Finn!

Oki_1 ::

Prav predvidevaš,čeprav nekaj vem a to je tako malo,da je zanemarljivo.

Tutankhamun ::

Poglej oki, kjer maš makroje, tm izber ThisWorkbook, pa tole upiš not

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Col = Target.Column
    Row = Target.Row
    Val = Target.Value
End Sub


v col dobiš številko kolonce, v row pa številko vrstice, kjer se je spremenila vrednost. V spremenlivki Val pa je nova vrednost.

Pol pa dodj še kšn if stavk, da preverjaš, če se je spremenila vrednost samo v določeni celici.
Kdaj se je sprememba nardila pa prever še sistemsko urco, pa nekam upiš.
AMD Phenom QUAD 9950 Black Edition, 8GB

apachee ::

Ok.

Sem ti hotel tukaj napisati kako in kaj, a sem ugotovil da bi jaz spisal cel roman, katerega pa ti najbrž ne bi niti razumel. Tako da je najbolje če mi ali pošlješ Excelov file in ti jaz to naredima ali pa se dobiva kje v Ljubljani in to skupaj narediva.
You can't win without The Finn!

apachee ::

Khm, nočem te popravljati, tutankamun, ampak Excell 2003 tega eventa nima ( ne vem kako je za nazaj )

Za 2003;

Private Sub Worksheet_Change(ByVal Target As Range)
"code>"
End Sub

In pa te 3 vrstice bodo najbrž "vrgle ven error oz. napako.

Če pa to dela v prejšnjih verzijah Excela, potem ok. Ampak še vedno mislim da si ne bo dosti mogel pomagat s tvojo kodo. Najbrž ne ve kaj so to eventi, properties, kako zapisati te vrednosti na Sheet oz preglednico in podobne stvari.
You can't win without The Finn!

Tutankhamun ::

am apachee js mam excell 2003 tko da pššššt. Tole use dela, vrjem men :D.
Aja edin namest unga Val napis Val_ch.
AMD Phenom QUAD 9950 Black Edition, 8GB

apachee ::

OK Tutankamnu. Pol bom pa jst pštt kukr ti pravš. Ker sm malce pogledu in vidu da maš prav. Event dejansko obstaja. Malce površen sem bil, ker v Excelu dejansko ne delam nič. Access je bolj moje področje, tako da se opravičujem za disinformation.

Vseeno pa mogoče bi bilo prav da mu napišeš še kako bo te vrednosti shranil nazaj na preglednico oz. kam se mu ta "zgodovina" sploh shranjuje oz kako jo dejansko nekam shraniti.
You can't win without The Finn!

Zgodovina sprememb…

  • spremenil: apachee ()

Tutankhamun ::

Če mislš good luck MEN, ni potrebe, men use dela :D.
Oki ti pa, če boš mel probleme sam povej, to dela 100%
Sam še urco morš not postavt, kar pa vrjen nau težava, glede na to da si že neki napisu ;)
AMD Phenom QUAD 9950 Black Edition, 8GB

Oki_1 ::

Ej,fanta sam brez prepira.....Sam tolk da povem kaku mora stvar delat

Evo,tkole:
V Excelovi celici naprimer A1 je vnešena formula iz DDe serverja.Ko ta server zaženem se v tej celici pojavi neka vrednost (to je vrednost naprimer temperature).Sedaj pa rabim sledeče...Ko se vrenost temperature spremeni mora Excel to zaznati in v neko celico (naprimer B10)vpisati njeno novo vrednost.Seveda mora biti zraven še čas spremenbe(naprimer v celici C10).Ko se vrednost temperature v naši celici A1 zopet spremeni mora Excel ta pojav spet zaznati in novo vrednost podpisati pod celico B10 - torej v celico B11.V celici C11 pa mora biti nov datum spremenbe.In tako naprej in tako naprej dokler je še.......

No kaj pravita na to aplikacijo.

PS. v VBA znam sicer vnašati formule ki pripadajo DDe serverju in nato napravit Command button ta to formulo.tukaj pa se moje znanje o Resničnem programiranju v VBA neha.

Zgodovina sprememb…

  • spremenil: Oki_1 ()

Tutankhamun ::

Dim ROW_W As Long

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    
    Col = Target.Column
    Row = Target.Row
    Val_Ch = Target.Value
    
    If (Col = 1 And Row = 1) Then
        ROW_W = ROW_W + 1
        Cells(ROW_W, "B") = Val_Ch
        Cells(ROW_W, "C") = Date & " " & Time
    End If

End Sub


Evo dela ko urca :D
AMD Phenom QUAD 9950 Black Edition, 8GB

apachee ::

Poskusi kaj takega, s tem da v A1 celico vnesi formulo. Nisem pa prepričan da se bo ta event sprožil takrat ko se ti bo spremenil rezultat formule oz vrednosti celice A1. Mogoče bi urca pomagala

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column = 1 And Target.Row = 1 Then
Cells(10, 2) = Cells(1, 1) 'celica B10
Cells(10, 3) = Time 'Celica C10
Cells(10, 4) = Date 'celica D10
End If
End Sub

'Lahko zdruzis C10 in D10 in sicer
'Cells(10, 3) = Time & ", " & Date

Seveda pa počakaj še na strokovno oceno Tutankamuna
You can't win without The Finn!

apachee ::

Mogoče bi bilo boljše če bi to kodo vezal na tisto celico, v katero se nova vrednost formule zapiše, torej v celico B10.

In sicer samo spremeni if pogoj na:

If Target.Column = 3 And Target.Row = 10 Then

in pa tole vrstico pobriši

Cells(10, 2) = Cells(1, 1) 'celica B10

Torej da bo Excel pozoren v bistvu na spremembo B10 celice, ki se itak spremeni takrat ko se bo spremenila vrednost formule v celici A1.

To da bo celica B10 vsakič vsebovala ta pravo vrednost pa dosežeš tako, da kot vrednost celice B10 vpišeš sledeče:

=A1
You can't win without The Finn!

Zgodovina sprememb…

  • spremenil: apachee ()

Tutankhamun ::

Ja strokovan ocena je taka.
Ti bi mogu delat loge, ne use v isto celico.
Enkrat ko zapišeš datum v celico, moreš naslednjega u novo vrstico. Tko kot sm js pred tabo.

No vidm da tep tut dela tist Sheet_Change :D, Lepo.

In ja EVENT SE BO SPROŽU, ni potrebe po urci ;).
AMD Phenom QUAD 9950 Black Edition, 8GB

apachee ::

Khmm kaj misliš s tem vse v isto celico ??? 8-O

Vrednost A1 sem zapisal v B10 in v C10 in D10 sem zapisal še uro in datum.

Mislim da vse lepo in prav, o pisanju vse v isto celico pa ni po mojem ne duha ne sluha. Ali pač?

Aja in event se pri ročnem spreminjanju vrednosti formule v celici A1 NE SPROŽI !!! Poskusi

Aja in oba eventa bi delala, vendar tvoj na vseh sheetih, moj pa le na prvem, ker sem ga tam tudi uporabil, tako da za splošno delo je tvoj morda , ni nujno boljši. Tvoj ni "na vrvici" in se sproži na vseh sheetih kar zna biti moteče, če ne celo hudo narobe. Moj event pa je vezan na določen sheet in bo delal LE TAM IN NIKJER DRUGJE.
You can't win without The Finn!

Zgodovina sprememb…

  • spremenil: apachee ()

Tutankhamun ::

potem ko se spet spremeni vrednost u celici A1
pa zapišeš vrednost, uro in datum v vrstico 11
ko se spet spremeni A1
zapišeš v vrstico 12
ITD ;) tko sm js zastopu :D
AMD Phenom QUAD 9950 Black Edition, 8GB

apachee ::

Pravilno si zastopu.
You can't win without The Finn!

Zgodovina sprememb…

  • spremenil: apachee ()

Tutankhamun ::

OKIIII, hit povej kdo je zej narobe zastopu :|. Da vem, a priznam zmago Apacheee-ju :D. Al jo bo mogu pa on men ;)
AMD Phenom QUAD 9950 Black Edition, 8GB

apachee ::

Maš prav, po tem postoku res pišem v isto celico. :\

Nisem zasledil da moraš vsakič potem pisati v novo vrstico.

Zmago bom tukaj raje prepustil tebi Tutankamun, naj ti bo :D

OKI mislim da bi ti moral to delat v drugem okolju in ne Excelu. Access bi bil bolj primeren, saj kolikor jaz sedaj vidm, ti bi dejansko moral trazmislit o kaki bazi podatkov, oz. Access orodju. Mislim da bi bil bolj primeren za to kar ti počneš.

Tutankamun kaj študiraš na FRI?
You can't win without The Finn!

Zgodovina sprememb…

  • spremenil: apachee ()

Oki_1 ::

Urce ne sme biti ker je zgodovina odvisna samo od spremenbe.Če je spremenba potem se mora zgodovina podpisovati.Če spremenbe ni potem ni potrebe da zgodovina zapisuje vrednosti.Sicer v velici (v našem primeru A1) ne smem nič spreminjati ker je že tam formula za DDe server.

vidim da obvladata oba.Eno vprašanje?Kdo je pripravljen priti sem (k meni domov) in mi to pomagati napraviti.seveda proti plačilu se razume.

Ker tukaj ni samo ene celice za brati ampak jih je kar nekaj.In ker ne obvladam tega se raje(zaenkrat dokler ne vidim in se ne naučim) ne zafrkavam v nedogled.

apachee ::

S ki pa si?
You can't win without The Finn!

Oki_1 ::

Celica A1 se samodejno spreminja.VBa mora slediti spremenbam v celici A1 in zapisovati spremembe nekam.Vendar mora biti vsaka spremenba tudi vidna.Tako je Tutankhamun.

Oki_1 ::

Okolica Domžal.Radomlje - Rova.

Tutankhamun ::

Hvala Oki, za potrditev. Sej je apachee tut spoznl napako :D. In ja sej oba delava isto, bereva spremembe A1 in jih zapiševa na ustrezno mesto.

Hit si dobu odgovore :D
AMD Phenom QUAD 9950 Black Edition, 8GB

Zgodovina sprememb…

apachee ::

Sam malo. Neki mi ni jasno.

A1 vsebuje formulo, kakor si prej napisal, če se ne motim. Torej se spreminjajo vrednosti spremenljivk ki nastopajo v tej funkciji in končna vrednost funckije. Sama funkcija pa ne. Ali pač?

Če to drži potem se po moje vrednost oz. vsebina celice A1 ne spreminja ampak vrednost funkcije ki je v celici A1. Ali pač?

Ker če to drži, potem se dejansko vrednost A1 NE SPREMENI, torej tudi event Change se NE SPROŽI, torej ta stvar ŠE NE deluje :)

Razen če se vsakič ko se spremeni tudi NA NOVO cela zapiše, potem pa stvar deluje.

Do I sound a little bit paranoid?
You can't win without The Finn!

Zgodovina sprememb…

  • spremenil: apachee ()

Oki_1 ::

V celici A1 je vpisana koda ki je potrebna da bere celica A1 preko DDe serverja v krmilniku neke vrednosti

Naprimer.=UNITRONICS\UNIT1!Mi203
Ko to kodo vpišem v celico in poženem DDe server,avtomatsko namesto te napisane kode pokaže vrednost Mi(memory interger-ja).

Tutankhamun ::

Apachee ja, mal si paranoičn, morem mal te mal špikat :D, mislm da ni formula uzadi celice A1, ampak se iz nekje not upiše.

Sej bo oki sprobu če dela, pa bo povedu
AMD Phenom QUAD 9950 Black Edition, 8GB

Tutankhamun ::

je že odgovoru :D
AMD Phenom QUAD 9950 Black Edition, 8GB

Oki_1 ::

Ja,Tutankhamon,je zakomplicirano.Ker je drugače,če ti direktno v celico A1 vneseš neko število,pritisneš ENTER in potem delaš na osnovi tega.Če bi bili tako,bi dal dokument v skupno rabo poklikal sledi spremenbam in Vola.Tko pa tukaj nič ne klikaš.samo opazuješ is spremljaš kaj se dogaja z zgodovino.

Tutankhamun ::

ne Oki, Makro sm si napisu, da mi je zapisvl, ne skrb ni entra pa ročnega upisovanja. Sm naredu use avtomatsk :D. Sm use poskrbu, da dela kot more 8-)
AMD Phenom QUAD 9950 Black Edition, 8GB

Zgodovina sprememb…

Oki_1 ::

Hvala obema.Zdej grem pa probat če dela.Se lohk zmenmo za morebitno kasnejšo pomoč,če bo treba?

Oki_1 ::

Super,zadeva dela.Samo en problem imam.Če vse to napišem v novem Zvezku zadeva funcionira ker sta oba pisala v poglavje ThisWorkbook.Kako pa to stvar spravim na določen list (Sheet)?Sedaj imam naprimer Sheet1 rezerviran za pošiljanje podatkov.Na Sheet2 pa bi imel zgodovino.Če vse skupaj kopiram ne dela.

Tutankhamun ::

Sej ne vem če te zastopm. Ugibam, ti me pa poprav ;).
na sheet1 maš ti uno celico A1, kjer dobivaš vrednosti. Te loge bi pa shranjevl na sheet2.
A sm zadel a sm falu? povej pa se kuj lotm mal zabavat :D.
AMD Phenom QUAD 9950 Black Edition, 8GB

apachee ::

Tutankamun GET A JOB :) , ker ocitno znanje mas in je skoda da ga ne izkoristis.

Oki, mislim da bos moral to stvar vezan na sheet1 in ne na ThisWorkbook, kakor sem ze zgoraj omenil.

A mislim da to bo Tutankamun vse lepo napisal in razložil, tko da lp obema.
You can't win without The Finn!


Vredno ogleda ...

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

Pomoč za excell

Oddelek: Programska oprema
51324 (1230) Silikon
»

[Excel]Kako izvleči vrednost?

Oddelek: Programiranje
223782 (3505) Mobidick
»

Mojstri excela pomoč prosim

Oddelek: Programska oprema
91460 (1326) icko
»

[Excel]Vrednost celice = ime dokumenta

Oddelek: Programska oprema
314745 (4167) veteran
»

[VBA] Excel, range, cells problem

Oddelek: Programiranje
51325 (1268) darkolord

Več podobnih tem