Макро када се Екцел ћелија промени - Екцел савети

Преглед садржаја

Неколико читалаца поставило је питања која захтевају да Екцел покреће одељак макроа сваки пут када се вредност промени у табели Екцел.

Прво, побољшани метод доступан само у КСЛ97: Екцел 97 има неке нове руковаоце догађајима који омогућавају покретање макронаредбе сваки пут када се ћелија промени.

Рецимо да сваки пут када се у колону А унесе вредност већа од 100, желите да ћелију поред ње форматирате у црвену боју.

  • Отворите Висуал Басиц Едит (Алатке> Макро> Висуал Басиц Едитор)
  • У левом прозору кликните десним тастером миша Схеет1 и изаберите Виев Цоде.
  • На врху дијалошког оквира Боок1 - Схеет1 Цоде налазе се два падајућа менија. У левом падајућем менију изаберите Радни лист. Са десног падајућег менија изаберите Промени.
  • Унесите следеће редове кода:

    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

Сваки пут када се вредност у ћелији промени, овај макро ће се покренути. Променљива Таргет ће вам рећи која ћелија и нова вредност ћелије. Изненађујуће, употреба ове методе не успорава значајно процес.

Имајте на уму да ће макро остати активан све док је радни лист отворен или док не покренете макро са следећим редом у њему:

Application.EnableEvents = False

/ п> У програму Екцел 95 / 7.0: Морате да користите методу ОнЕнтри. Навели сте макро који желите да се покреће након уноса било које вредности. У овом случају променљива Апплицатион.Цаллер садржи адресу и вредност која се променила. У нови модул унесите следеће:

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

Провера ОнЕнтри остаће активна док не покренете макро са следећим кодом:

Worksheets("Sheet1").OnEntry = False

Занимљиви Чланци...