Я создал сценарий VBA, который определяет число и отображает цвет в зависимости от указанного диапазона. Тем не менее, я в растерянности относительно того, как превратить это в функцию. Проблема в том, что если я повторяю этот код снова и снова, я получаю сообщение об ошибке, говорящее, что хранимая процедура слишком велика. Есть идеи, как превратить этот код в функцию?
Q3: Q3 является переменным, следующие строки кода будут R3: R3
_BAL1 также является переменной величиной, отличающейся от 1 в следующих строках кода
Я также использую это:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Q3:Q3")) Is Nothing Then
Me.Shapes("_BAL1").Select
With Range("BAL1")
Selection.ShapeRange.Fill.ForeColor.RGB = ThisWorkbook.Colors(.Value)
.Select
End With
End If
Попытка заставить код, указанный в ответе, работать, но он не будет работать, продолжает выдавать ошибку объекта 424:
Вот адаптированный код
Function my_test(ByRef Target As Range, ByVal my_range As String, ByVal my_range2 As String)
If Not Intersect(Target, Range(my_range)) Is Nothing Then
Me.Shapes("_" & my_range2).Select
With Range(my_range2)
Selection.ShapeRange.Fill.ForeColor.RGB = ThisWorkbook.Colors(.Value).Select
End With
End If
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
Call my_test(Target, "Q3:Q3", "BAL1")
Call my_test(Target, "Q4:Q4", "BAL2")
End Sub
Хотелось бы узнать, почему там ошибка