Makró az Excel cellájának változásakor - Excel tippek

Tartalomjegyzék

Számos olvasó feltett olyan kérdéseket, amelyek megkövetelik, hogy az Excel futtasson egy makrórészt minden alkalommal, amikor az érték megváltozik az Excel táblázatban.

Először is, a továbbfejlesztett módszer, amely csak az XL97-ben érhető el: Az Excel 97 rendelkezik néhány új eseménykezelővel, amelyek lehetővé teszik a makrók futtatását minden egyes cellaváltáskor.

Tegyük fel, hogy bármikor 100-nál nagyobb értéket ad meg az A oszlopba, a mellette lévő cellát pirosra akarja formázni.

  • Nyissa meg a Visual Basic szerkesztést (Eszközök> Makró> Visual Basic Editor)
  • A bal oldali ablakban kattintson a jobb gombbal a Sheet1 elemre, és válassza a Kód megtekintése lehetőséget.
  • A Book1 - Sheet1 Code párbeszédpanel tetején két legördülő menü található. A bal oldali legördülő menüből válassza a Munkalap lehetőséget. A jobb oldali legördülő menüből válassza a Módosítás lehetőséget.
  • Írja be a következő kódsorokat:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Column = 1 Then ThisRow = Target.Row If Target.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

A cella értékének megváltoztatásakor ez a makró futtatásra kerül. A Target változó megmondja, hogy melyik cella és a cella új értéke. Meglepő módon ennek a módszernek a használata nem lassítja jelentősen a folyamatot.

Ne feledje, hogy a makró addig marad aktív, amíg a munkalap nyitva van, vagy amíg egy makrót futtat a következő sorral:

Application.EnableEvents = False

/ p> Excel 95 / 7.0 verzióban: Az OnEntry metódust kell használnia. Megad egy makrót, amelyet futtatni kíván bármely érték megadása után. Ebben az esetben az Application.Caller változó tartalmazza a megváltozott címet és értéket. Írja be a következőket egy új modulba:

Sub AutoOpen() Worksheets("Sheet1").OnEntry = "CheckIt" End Sub Sub CheckIt() If Application.Caller.Column = 1 Then ThisRow = Application.Caller.Row If Application.Caller.Value> 100 Then Range("B" & ThisRow).Interior.ColorIndex = 3 Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If End If End Sub

Az OnEntry ellenőrzése addig marad aktív, amíg egy makrót nem futtat a következő kóddal:

Worksheets("Sheet1").OnEntry = False

érdekes cikkek...