Telefonszámunk: 1-472-0679

[Resolved] Értékváltozás figyelése

Kezdőlap Fórumok Excel programozás [Resolved] Értékváltozás figyelése

Topic Resolution: Resolved
5 bejegyzés megtekintése - 1-5 / 5
  • Szerző
    Bejegyzés
  • #3470
    ipijani
    Felhasználó

      Üdv mindenkinek.

      Egy cella értékének változását szeretném figyelni és egy üzenetet megjeleníteni, ha változás van.
      A probléma abból adódik, hogy a cella értékét nem én változtatom, hanem a figyelt cella egy másik cellára mutat (=F3).

      PL. ezzel próbálkoztam, de ha nem én írok be új értéket, akkor nem működik.

      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim KeyCells As Range
      ‘ The variable KeyCells contains the cells that will
      ‘ cause an alert when they are changed.
      Set KeyCells = Range(„A1:A1”)
      If Not Application.Intersect(KeyCells, Range(Target.Address)) _
      Is Nothing Then
      ‘ Display a message when one of the designated cells has been
      ‘ changed.
      ‘ Place your code here.
      MsgBox „Cell ” & Target.Address & ” has changed.”
      End If
      End Sub
      ‘Private Sub Worksheet_Change(ByVal Target As Range)

      A segítségetek előre is köszönöm.
      Üdv:
      ipijani

      #3471
      delila
      Felhasználó

        Szia!

        Azt a cellát kell figyeltetned, aminek a változása módosítja a „figyelt cella” (F3) értékét. Úgy látom, az A1-be viszel be értéket, erre hivatkozik az F3.

        Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = „$A$1” Then _
        MsgBox „Megváltozott az F3 cella értéke”
        End Sub

        #3479
        horvimi
        Adminisztrátor

          Sziasztok!

          Delila megoldása is jó lehet, de:

          Ha számítás eredményének a változását szeretnétek érzékelni, akkor ezt szokás tenni:
          1. A fájl megnyitásakor egy globális változóba lementjük a képlet aktuális eredményét
          2. A Worksheet_Calculate eseményben pedig megnézzük, hogy most mi van a cellában (target), és az megegyezik-e az induláskorval.

          Ha nem egyezik, akkor változás volt. Ezt kiírhatjuk, de a mi fontos, hogy az új értéket megint tegyük el a globális változónkba.

          Tehát a modul tetején van egy

          Dim regi_ertek

          A munkafüzet megnyitási eseményéhez tartozik a figyelendő cella értékének lementése

          Private Sub Workbook_Open()
              regi_ertek = Sheet1.Range(figyelt cella).Value
          End Sub

          Végül a munkalap kalkuláció eseményéhez tesszük az összehasonlítást és nem egyezés esetén a lementést.

          Private Sub Worksheet_Calculate()
              If Range(figyelt_cella).Value <> regi_ertek Then
                  MsgBox "Változás!"
                  regi_ertek = Range(figyelt_cella).Value
              End If
          End Sub

          Imre

          #3481
          ipijani
          Felhasználó

            Sziasztok!

            A probléma abból adódik, hogy figyelt cellában lévő adat egy külső adatforrásból származik.
            (=RSLINX|PLCD!’SC_64000_Amps.Inp_Raw,L1,C1′)
            Tehát magában az excelben semmiféle felhasználói beavatkozás nem történik.
            Makróval megoldható lenne, hogy figyelje a cella tartalmát, de makró futás közben az adatfrissítés jóval lassabb.

            Köszönöm a hozzászólásokat.

            üdv.
            ipijani

            #3482
            ipijani
            Felhasználó

              Kedves Imre!

              Köszönöm a segítséget, működik!
              Csak globális változó helyett kiíratom egy másik cellába a változás előtti értéket.

              Még egyszer köszönöm.

              üdv:
              ipijani

            5 bejegyzés megtekintése - 1-5 / 5
            • Be kell jelentkezni a hozzászóláshoz.