Я хотел бы запускать макрос (скажем, test1) непрерывно на листе всякий раз, когда значение в данном диапазоне (от F5 до LastRow). В этом отношении помогли события Worksheet_Activate и Worksheet_Change. Однако в Excel происходит сбой при удалении значений в диапазоне. Как пример:
F5 = 100, F6 = 120, F7 = 140
Предположим, значение F5 изменено на 120. Затем макрос и события работают нормально. Однако, когда все значения удалены (поэтому F5 до F7 пусты), Excel вылетает.
Я пытался запустить каждую строку в моем коде отдельно, но я не уверен, что вызывает сбой (возможно, цикл, как написано в макросе)?
Я новичок в VBA, и любая помощь очень ценится: -)
Sub TEST()
Dim LastRow As Long
Dim i As Long
LastRow = Sheets("blad1").Range("F5").End(xlDown).Row
For i = 5 To LastRow
Range("Z" & i).Formula = "=ABS(F" & i & " -(J" & i & " *(100/21)))< 5"
'Checks if the value in column F matches the amount in column J for each
'cellin that column with a significance of 5. The return is shown as
'True or False.
Next i
For i = 5 To LastRow
If Range("Z" & i) = True Then Range("F" & i).Interior.Color = RGB(255,
255, 255) Else: Range("F" & i).Interior.Color = RGB(255, 0, 0)
'If the
'value in column Z is True, then the cell colour in column F is white.
'If False, then red.
Next i
End Sub
'These are the lines on the relevant worksheet:
Private Sub Worksheet_Activate()
Call test
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastRow As Long
LastRow = Sheets("Test").Range("F5").End(xlDown).Row
If Not Intersect(Target, Me.Range("F5:F" & LastRow)) Is Nothing Then
Application.EnableEvents = False
Call test
Application.EnableEvents = True
End If
End Sub