Когда результат формулы изменяется в ячейке, макрос не запускается.Зачем? - PullRequest
0 голосов
/ 05 июня 2019

Когда результат формулы изменяется в моей таблице в диапазоне столбца K («K2: K5»), я хочу, чтобы вся строка в таблице была заполнена цветом.Но я хочу, чтобы строка была цветной, если результат не равен 0.

Так, например.если результат изменяется в K2 (и не равен 0), вся строка A2: L2 будет окрашена.Формула ссылается на значения, которые вы выбираете из выпадающих списков (созданных из «проверки данных» в меню Excel на вкладке «Данные»).Эти выпадающие списки расположены в той же строке (например, «D2: J2»), что и соответствующая формула.Значения в раскрывающемся списке относятся к диапазону на том же листе за пределами таблицы.До сих пор у меня есть один код для рабочего листа, касающийся события изменения, которое вызывает модуль с сабвуфером, который изменит цвет строки.

Но это не работает, и я не получаю сообщений об ошибках.

Это код для события изменения рабочего листа:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "§D2:§J2" Then
Color_Row
End If

End Sub

Здесь целевой адрес должен быть равным всему диапазону, но я не знаю, как дать правильный синтаксис для этого.

Вот код для изменения цвета в строке:

Sub Color_Row()
Dim r As Long, c As Long 'r=rows in the excel sheet | c= value of cell in _  
column k
Dim numrow As Long 'last row with data
Dim tblR As Long 'tablerow

numrow = TimeMeasure.Range("K" & Rows.Count).End(xlUp).Row

For r = 2 To numrow
tblR = r - 1
c = Cells(r, 11).Value

If c <> 0 Then
      [TimeDist].Rows(tblR).Interior.Color = 12961279

Else

      [TimeDist].Rows(tblR).Interior.Color = xlNone 'no fill color


End If

Next

End Sub

Я вошел в этот код и наблюдал переменные, такие как c, r, numrow, tblR, и все это, кажется, соответствует моей таблице(имя моей таблицы - TimeDist).

Единственное, что я заметил, это то, что никакие значения никогда не присваивают c в цикле.Я знаю, что этот код работает в другой книге, но затем я вручную ввожу новое значение в определенную ячейку за пределами таблицы, что изменяет результат формулы в таблице (тогда строки окрашиваются)

Iочень благодарен за любую помощь в этом.

1 Ответ

0 голосов
/ 06 июня 2019

Большое спасибо за ваш вклад, который помог мне решить его! :)

Теперь работает как шарм!

Этот код worksheet_calculate выполняет свою работу (хотя я изменил диапазон ячеек):

Private Sub Worksheet_Calculate()
Dim Xrg As Range
Set Xrg = Range("L2:L5")
If Not Intersect(Xrg, Range("L2:L5")) Is Nothing Then
Color_Row
End If
End Sub
...