Привет, у меня есть частный подпункт (рабочий лист по изменению), который будет запускать один из 26 макросов на основе значения ячеек.Все, что они делают, это скрывают или отображают определенные строки на основе значения из ячейки, в которой есть формула.
Теперь, когда я вручную изменяю значение ячейки, событие изменения рабочего листа и все макросы работают так, как они есть.подразумевается, НО они не работают, когда значение ячейки изменяется с помощью формулы, точнее их биты делают.
Я установил рабочий лист и диапазон переменных в каждом макросе, а также целевую ячейкув событии изменения рабочего листа должным образом (dim r как диапазон и т. д.)
Код для события изменения рабочего листа приведен ниже - интересно, может ли кто-нибудь определить или помочь, почему это не работает при запускебез ручного изменения значения ячейки
Если я могу избежать этого, я не хочу программно изменять значение в ячейке (если «условие», то r.value = «Значение» 26 раз!)
вот код рабочего листа
Dim r As Range, r1 As Range, r2 As Range, r3 As Range, r4 As Range, r5 As Range, r6 As Range, r7 As Range, r8 As Range
Dim r9 As Range, r10 As Range, r11 As Range, r12 As Range, r13 As Range, r14 As Range, r15 As Range, r16 As Range
Private Sub Worksheet_Change(ByVal Target As Range)
'Set range for selecting the region
Set r = Range("O19")
'Set facility ranges
Set r1 = Rows("22:24"): Set r2 = Rows("25:27"): Set r3 = Rows("28:30"): Set r4 = Rows("31:33")
'set product line ranges
Set r5 = Rows("37"): Set r6 = Rows("38"): Set r7 = Rows("39"): Set r8 = Rows("40"): Set r9 = Rows("41"): Set r10 = Rows("42"): Set r11 = Rows("43:45")
Set r12 = Rows("46:48"): Set r13 = Rows("49"): Set r14 = Rows("51:52"): Set r15 = Rows("36"): Set r16 = Rows("50")
'Hiding facility Rows based on product line
If r.Value = 1 Then ' Select Facility & all cells hidden
Application.Run ("Select_Facility")
ElseIf r.Value = 2 Then ' This is for North America & no Facility
Application.Run ("NA_NoFacility")
ElseIf r.Value = 3 Then ' This is for Breen Only
Application.Run ("Breen")
ElseIf r.Value = 4 Then ' This is for Conroe Only
Application.Run ("Conroe")
ElseIf r.Value = 5 Then ' This is for Lafayette Only
Application.Run ("Lafayette")
ElseIf r.Value = 6 Then ' This is for Breen & Conroe Only
Application.Run ("Breen_Conroe")
ElseIf r.Value = 7 Then ' This is for Breen & Lafayette Only
Application.Run ("Breen_Lafayette")
ElseIf r.Value = 8 Then ' This is for Conroe & Lafayette
Application.Run ("Conroe_Lafayette")
ElseIf r.Value = 9 Then ' This is for All North America
Application.Run ("All_NA")
ElseIf r.Value = 10 Then ' This is for Europe and no facility
Application.Run ("Europe_NoFacility")
ElseIf r.Value = 11 Then 'This is for Gateshead only
Application.Run ("Gateshead")
ElseIf r.Value = 12 Then 'This is for Kintore only
Application.Run ("Kintore ")
ElseIf r.Value = 13 Then 'This is for Kintore & Gateshead only
Application.Run ("All_Europe")
ElseIf r.Value = 14 Then ' This is for Middle East and no facility
Application.Run ("Europe_NoFacility")
ElseIf r.Value = 15 Then 'This is for Dubai only
Application.Run ("Dubai")
ElseIf r.Value = 16 Then 'This is for Saudi only
Application.Run ("Saudi")
ElseIf r.Value = 17 Then 'This is for Dubai and Saudi only
Application.Run ("Dubai_Saudi")
ElseIf r.Value = 18 Then ' This is for Far East & no Facility
Application.Run ("FE_NoFacility")
ElseIf r.Value = 19 Then ' This is for Loyang Only
Application.Run ("Loyang")
ElseIf r.Value = 20 Then ' This is for Tuas Only
Application.Run ("Tuas")
ElseIf r.Value = 21 Then ' This is for Perth Only
Application.Run ("Perth")
ElseIf r.Value = 22 Then ' This is for Loyang & Tuas Only
Application.Run ("Loyang_Tuas")
ElseIf r.Value = 23 Then ' This is for Loyang & Perth Only
Application.Run ("Loyang_Perth")
ElseIf r.Value = 24 Then ' This is for Tuas and Perth Only
Application.Run ("Tuas_Perth")
ElseIf r.Value = 25 Then ' This is for All far East facilities
Application.Run ("All_FE")
ElseIf r.Value = 26 Then ' This is for Global
Application.Run ("All_Global")
End If
Пользователь может выбрать несколько комбинаций объектов, которые дают мне 26 вариантов - следовательно, 26 вариантов выше- изначально инструкции для скрытия строки были внутри каждой опции ElseIF, но она там тоже не сработала бы.
Способ работы формы заключается в том, что пользователь выбирает регион, а затем выбирает соответствующие средства - это изменитцелевую ячейку дважды, а также исправьте скрытые и видимые строки.из которых пользователь выберет да или нет.