Makrokomanda, kai keičiasi „Excel“ langelis - „Excel“ patarimai

Turinys

Keletas skaitytojų uždavė klausimus, kuriems reikalinga, kad „Excel“ paleistų makrokomandos skyrių kiekvieną kartą, kai „Excel“ skaičiuoklėje pasikeistų reikšmė.

Pirma, patobulintas metodas, prieinamas tik „XL97“: „Excel 97“ turi keletą naujų įvykių tvarkyklių, leidžiančių makrokomandą paleisti kiekvieną kartą, kai keičiasi langelis.

Tarkime, kad bet kuriuo metu į A stulpelį įvedus didesnę nei 100 reikšmę, šalia jo esančią langelį norite suformatuoti raudoną.

  • Atidarykite „Visual Basic“ redagavimą (įrankiai> makrokomanda> „Visual Basic“ redaktorius)
  • Kairiajame lange dešiniuoju pelės mygtuku spustelėkite „Sheet1“ ir pasirinkite „View Code“.
  • Dialogo lango „Book1 - Sheet1 Code“ viršuje yra du išskleidžiamieji meniu. Kairiajame išskleidžiamajame meniu pasirinkite Darbalapis. Dešiniajame išskleidžiamajame meniu pasirinkite Keisti.
  • Įveskite šias kodo eilutes:

    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

Kaskart pakeitus langelio vertę, ši makrokomanda bus vykdoma. Kintamasis „Target“ nurodys, kuri langelis ir nauja langelio vertė. Keista, kad naudojant šį metodą procesas nemažėja.

Atminkite, kad makrokomanda išliks aktyvi tol, kol bus atidarytas darbalapis arba kol vykdysite makrokomandą su šia eilute:

Application.EnableEvents = False

/ p> „Excel 95 / 7.0“: turite naudoti „OnEntry“ metodą. Nurodote makrokomandą, kurią norite paleisti įvedus bet kokią vertę. Šiuo atveju kintamajame „Application.Caller“ yra adresas ir vertė, kurie pasikeitė. Į naują modulį įveskite:

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

„OnEntry“ tikrinimas bus aktyvus, kol paleisite makrokomandą su šiuo kodu:

Worksheets("Sheet1").OnEntry = False

Įdomios straipsniai...