Makro, kad mainās Excel šūna - Excel padomi

Satura rādītājs

Vairāki lasītāji ir uzdevuši jautājumus, kuriem nepieciešama Excel, lai palaistu makro sadaļu ikreiz, kad Excel izklājlapā mainās vērtība.

Pirmkārt, uzlabotā metode, kas pieejama tikai versijā XL97: Excel 97 ir daži jauni notikumu apstrādātāji, kas ļauj makro palaist katru reizi, kad mainās šūna.

Pieņemsim, ka jebkurā laikā vērtība A, kas ir lielāka par 100, tiek ievadīta kolonnā A, blakus esošo šūnu vēlaties formatēt sarkanā krāsā.

  • Atveriet Visual Basic rediģēšanu (Rīki> Makro> Visual Basic redaktors)
  • Kreisajā logā ar peles labo pogu noklikšķiniet uz Sheet1 un atlasiet Skatīt kodu.
  • Dialoglodziņa Book1 - Sheet1 Code augšdaļā ir divas nolaižamās izvēlnes. Kreisajā nolaižamajā izvēlnē atlasiet Darblapa. Labajā nolaižamajā izvēlnē atlasiet Mainīt.
  • Ievadiet šādas koda rindas:

    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

Ikreiz, kad šūnā tiek mainīta vērtība, šī makro tiks palaista. Mainīgais Target jums pateiks, kura šūna un šūnas jaunā vērtība. Pārsteidzoši, ka šīs metodes izmantošana procesu ievērojami nepalēnina.

Ņemiet vērā, ka makro paliks aktīvs, kamēr darblapa būs atvērta vai kamēr palaidīsit makro ar šādu rindu:

Application.EnableEvents = False

/ p> Programmā Excel 95 / 7.0: jāizmanto OnEntry metode. Jūs norādāt makro, kuru vēlaties palaist pēc jebkuras vērtības ievadīšanas. Šajā gadījumā mainīgais Application.Caller satur mainīto adresi un vērtību. Jaunā modulī ievadiet:

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 pārbaude paliks aktīva, līdz palaidīsit makro ar šādu kodu:

Worksheets("Sheet1").OnEntry = False

Interesanti raksti...