Excel cella megváltozásának figyelése

Excel cella megváltozásának figyelése
2007-02-23T12:04:24+01:00
2007-02-27T08:55:17+01:00
2022-11-03T13:25:42+01:00
K.Attila
Üdvözlet a dicső társaságnak!

Belefutottam az Excel egy anomáliájába, amit a "mikrszoft hótlájn" telefonon nemlétezónek nyilvánított, ezt szeretném megkerülni.

Tehát a kérdésem a következő: Hogyan tudom figyelni, hogy egy adott lapon levő meghatározott cella értéke mikor változik meg, mert ekkor elindítanék egy makrót. Bonyolítás: a lapon három különböző figyelendő cella van.

A megkerülendő hiba a következő:
Munka'-en ComboBox, melynek listája (listFillRange) Munka2!A':A10. Munka2 lapon pl 20. sor törlése esetén elindítja a "change" és a "cilck" eseményekbe írt makrót. Van olyan munkafüzetem, melyben ezt a bezárás is elindítja.
A gépemen XP alatt Office Professional 2003 fut. SP2 telepítve, Update. tegnap.

Légyszíves sürgősen segítsetek, mert áll a munkám...
Előre is köszi:K.Attila
Mutasd a teljes hozzászólást!
A munkalapnak van AfterChange eseménye, amelyik paraméterben kap egy Target nevű Range típusú objektumot. Ezt megvizsgálva meg tudod mondani, hogy a kérdéses cella(cellák) érintett-e.
Mutasd a teljes hozzászólást!

  • A munkalapnak van egy change eseménye, ami a cella változásakor fut le.

    A Tagret (ld. stl) megmondja, hogy mi változott.
    Ha te is változtatsz ilyenkor cellát, akkor application.enableevents (remélem jól emlékszem rá, de a VBA ajánlja) fel kell függeszetned az eseményeket.
    Mutasd a teljes hozzászólást!
  • Köszi a gyors válaszokat, a hérom figyelendő cellánál a munkalap SelectionChange eseménye működik, mert itt akkor kell a makrónak indulni, amikor az adott cellába a felhasználó írni a kar, és "belekattint". Erre müxik is a target, eddig is ezt használtam. A gond, hogy a ComboBox LinkedCell-je változáskor nem lesz aktív, így a target nem ő lesz. Megpróbálom beírni a ComboBox Change eseményébe, hogy válassza ki az adott cellát (activate v. select), így hátha megtalálja a target, és ez nem is okoz gondot, ha lefut.

    Üdv: K.Attila
    Mutasd a teljes hozzászólást!
  • A Range(kjCella).select müxik, ekkor a
    Private Sub Worksheet_SelectionChange(ByVal Target As Range) utatsításba összelehet hasonlítani a Range(kjCella).Addres-t a Target.Address-el, és egyezés esetén meghívni az eljárást.
    Bemásolom a kódot, biztos tudtok elegánsabb megoldást, amiből tanulhatok.

    Private Sub cmbSzall_Click() Range(SzallCella).Select End Sub Private Sub cmbTNRLista_Change() Range(TNRCella).Select End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim TargAddr As Variant TargAddr = Target.Address Select Case TargAddr Case Range(TNRCella).Address PL_TNR 'A kiválasztott TNR-hez tartozó PL kód alapján kigyűjti és 'beírja a TL lap 24 sorába az adott PL-hez tartozó többi TNR-t. Case Range(RendCella).Address RendCellaKitolt 'Megkeresi a TNR-t a Rendelés lapon és az ott talált értéket beírja a RendCella-ba. 'FELADJA A KÉRDÉST AZ INPBOX-SZAL, JAVASOL IS ÉRTÉKET 'Ha az inputbox formján "Cancel/Mégse" értéket válastjuk akkor üres értéket ad a változónak. 'Ekkor az alapértéket adjuk neki, és a RendCella új értékét visszaírja a Rendelés lap megf. helyére 'A RendCella új értékét visszaírja a Rendelés lap megf. helyére Case Range(SzallCella).Address SzallKivalaszt 'Kiválasztja a listából a szállítót 'Amennyiben a rendelés állapota függö, kétszer rákérdez a mentésre. ' Meghívja a rendelésmentést, VAGY Újra figyelmeztet utána ment, VAGY tovább '****Meghívja a listafrissítést, mely: 'Törli, majd újraírja a Lista lapon a Lista tartalmát, és 'Törli, majd újraírja a Rendelés lapon Rendelési lista tartalmát, és 'Majd meghívja a rutint, amely beállítja a cmbTNRLista ListFillRange új értékét 'AZ ÚJ RENDELÉS ÁLLAPOTÁT FÜGGŐRE ÁLLÍTJA Case Else '***NEM CSINÁL SEMMIT*** End Select End Sub

    Valamiért a CmbSzall nevű ComboBox esetében a change nem műküdött.

    Ha lehet, a pontot megosztanám, stl és Micu között.

    Mégegyszer köszi!

    Tudjátok, hogy ezt a jelenséget a ComboBox-szal mi okozza?

    Üdv: Attila
    Mutasd a teljes hozzászólást!
  • Pontok megosztására nincs lehetőség!
    Mutasd a teljes hozzászólást!
  • Szépjónapot Mindenkinek!

    Na a "mikrszoft hótlájn" e-mailben elismerte, hogy a probléma létezik, és dolgoznak a megoldáson. Amúgy az előző megoldásom féloldalsra sikerült, mert amikor makróval meg véltoztattam a forráslistát, többszöris fejreállt, majd kiakadt az excel (CTRL+Shift+nyilak nem működtek), úgyhogy office újratelepítés némi registry irtogatás után... Viszont úgy már működik, hogy a lista tertalmának változtatása elött másik lapon levő forrást adok a ComboBoxnak, majd a lista frissítése után újra adott lapról kapja a forrást.

    Ha megjön a "hótlájn" válasza felteszem, hátha érdekel valakit.

    A pontot stl-nek adom, mert a target megoldást Micutól egy másik kérdésemre egyszer már megkaptam.

    Azért köszönöm a segítséget Micunak is!

    Üdv:K.Attila
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd