Привет, у меня работает следующая функция для использования в качестве индикаторов состояния на моем листе Excel.
Function MapCheck() As String
Dim C(5), OV, i, x, R1
Dim element As Variant, element2 As Variant
R1 = Application.Caller.Row
C(1) = ColorCode(Trim(Range("E" & R1))) 'Generate a priority code for the DDR deliverable
C(2) = ColorCode(Trim(Range("I" & R1))) 'Generate a priority code for the FAT deliverable
C(3) = ColorCode(Trim(Range("L" & R1))) 'Generate a priority code for the SAT deliverable
C(4) = ColorCode(Trim(Range("O" & R1))) 'Generate a priority code for the CUP deliverable
C(5) = ColorCode(Trim(Range("R" & R1))) 'Generate a priority code for the DWG deliverable
OV = 1 'Define the default colour (Best Case)
For i = 1 To 5 'For each of the five columns
For x = 1 To 5 'Check each of the 5 columns and...
If C(i) < C(x) Then 'if the latest column has a worst progress than the worst so far
OV = C(x) 'Change the overal staus to the worst value
End If
Next x
Next i
Select Case OV
Case Is = 3 'If the overall status is 3
OV = "Red" 'The overall map colour will be Red
Case Is = 2 'If the overall status is 2
OV = "Orange" 'The overall map colour will be Orange/Amber
Case Is = 1 'If the overall status is 1
OV = "Green" 'The overall map colour will be Green
End Select
MapCheck = OV 'Return the overal map colour for the row/site
Затем я вызываю функцию в рабочей книге следующим образом =@MapCheck () Моя проблема в том, что когда кто-то обновляет значение в любом из столбцов его проверка c1-c5 он не запускает функцию mapcheck для его обновления
я попытался запустить следующее событие изменения рабочего листа, используя примеры здесь и справку MSonline
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("E1:R100"), Range(Target.Address)) Is Nothing Then
Call Module1.MapCheck
End If
End Sub
Это просто возвращает
Ошибка времени выполнения 424 объекта требуется