Как заново запустить макросы на основе последних значений ячеек - PullRequest
0 голосов
/ 21 марта 2020

У меня есть эти наборы макросов, которые заставляют строки скрывать и отображать их в зависимости от изменений значений ячеек, они могут запускаться по назначению, но строки могут время от времени нежелательно скрываться / скрываться из-за последовательности макросов, как мне кажется. Есть ли способ снова запустить все макросы, основываясь на последнем значении в целевых ячейках? Где мне не нужно go вернуться к каждой отдельной ячейке, чтобы вызвать значение для запуска макроса. Я искал в Интернете и пробовал то, что я считал возможными решениями, но просто не мог заставить его работать. Я очень ценю любую помощь или совет! Мои макросы текущие макросы, как показано ниже:

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Activate
        If Not Application.Intersect(Range("C8"), Range(Target.Address)) Is Nothing Then
        Select Case Target.Value
        Case Is = "A": Rows("54").EntireRow.Hidden = True
                       Rows("61").EntireRow.Hidden = True
                       Rows("77").EntireRow.Hidden = True
                       Rows("93").EntireRow.Hidden = True
                       Rows("109").EntireRow.Hidden = True
                       Rows("129").EntireRow.Hidden = True
        Case Is = "B": Rows("54").EntireRow.Hidden = False
                       Rows("61").EntireRow.Hidden = False
                       Rows("77").EntireRow.Hidden = False
                       Rows("93").EntireRow.Hidden = False
                       Rows("109").EntireRow.Hidden = False
                       Rows("129").EntireRow.Hidden = False
        Case Is = "C": Rows("54").EntireRow.Hidden = True
                       Rows("61").EntireRow.Hidden = True
                       Rows("77").EntireRow.Hidden = True
                       Rows("93").EntireRow.Hidden = True
                       Rows("109").EntireRow.Hidden = True
                       Rows("129").EntireRow.Hidden = True
        End Select
End If
        If Not Application.Intersect(Range("C8"), Range(Target.Address)) Is Nothing Then
        Select Case Target.Value
        Case Is = "B": Sheets("Proforma Inv").Visible = True
        Case Else
                       Sheets("Proforma Inv").Visible = False
        End Select
End If
        If Not Application.Intersect(Range("C9"), Range(Target.Address)) Is Nothing Then
        Select Case Target.Value
        Case Is = "Debug", "Soshi": Rows("55").EntireRow.Hidden = False
                       Sheets("Inv").Rows("41").EntireRow.Hidden = True
                       Sheets("Inv").Rows("48").EntireRow.Hidden = True
                       Sheets("Inv").Rows("55").EntireRow.Hidden = True
                       Sheets("Inv").Rows("62").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("39").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("46").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("53").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("60").EntireRow.Hidden = True

        Case Else
                       Rows("55").EntireRow.Hidden = True
                       Sheets("Inv").Rows("41").EntireRow.Hidden = False
                       Sheets("Inv").Rows("48").EntireRow.Hidden = False
                       Sheets("Inv").Rows("55").EntireRow.Hidden = False
                       Sheets("Inv").Rows("62").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("39").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("46").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("53").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("60").EntireRow.Hidden = False
        End Select
End If
        If Not Application.Intersect(Range("C52"), Range(Target.Address)) Is Nothing Then
        Select Case Target.Value
        Case Is = "1": Rows("72:119").EntireRow.Hidden = True
                       Rows("57:60").EntireRow.Hidden = False
                       Rows("62:71").EntireRow.Hidden = False
                       Sheets("Inv").Rows("44:64").EntireRow.Hidden = True
                       Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
                       Sheets("Inv").Rows("42:43").EntireRow.Hidden = False
                       Sheets("PL").Rows("22:23").EntireRow.Hidden = False
                       Sheets("PL").Rows("39:40").EntireRow.Hidden = True
                       Sheets("PL").Rows("56:57").EntireRow.Hidden = True
                       Sheets("PL").Rows("73:74").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("42:62").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("40:41").EntireRow.Hidden = False
        Case Is = "2": Rows("88:119").EntireRow.Hidden = True
                       Rows("57:60").EntireRow.Hidden = False
                       Rows("62:76").EntireRow.Hidden = False
                       Rows("78:87").EntireRow.Hidden = False
                       Sheets("Inv").Rows("51:64").EntireRow.Hidden = True
                       Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
                       Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
                       Sheets("Inv").Rows("49:50").EntireRow.Hidden = False
                       Sheets("PL").Rows("22:23").EntireRow.Hidden = False
                       Sheets("PL").Rows("39:40").EntireRow.Hidden = False
                       Sheets("PL").Rows("56:57").EntireRow.Hidden = True
                       Sheets("PL").Rows("73:74").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("49:62").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("47:48").EntireRow.Hidden = False
        Case Is = "3": Rows("104:119").EntireRow.Hidden = True
                       Rows("57:60").EntireRow.Hidden = False
                       Rows("62:76").EntireRow.Hidden = False
                       Rows("78:92").EntireRow.Hidden = False
                       Rows("94:103").EntireRow.Hidden = False
                       Sheets("Inv").Rows("58:64").EntireRow.Hidden = True
                       Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
                       Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
                       Sheets("Inv").Rows("49:54").EntireRow.Hidden = False
                       Sheets("Inv").Rows("56:57").EntireRow.Hidden = False
                       Sheets("PL").Rows("22:23").EntireRow.Hidden = False
                       Sheets("PL").Rows("39:40").EntireRow.Hidden = False
                       Sheets("PL").Rows("56:57").EntireRow.Hidden = False
                       Sheets("PL").Rows("73:74").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("56:62").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("47:52").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("54:55").EntireRow.Hidden = False
        Case Is = "4": Rows("57:60").EntireRow.Hidden = False
                       Rows("62:76").EntireRow.Hidden = False
                       Rows("78:92").EntireRow.Hidden = False
                       Rows("94:108").EntireRow.Hidden = False
                       Rows("110:119").EntireRow.Hidden = False
                       Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
                       Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
                       Sheets("Inv").Rows("49:54").EntireRow.Hidden = False
                       Sheets("Inv").Rows("56:61").EntireRow.Hidden = False
                       Sheets("Inv").Rows("63:64").EntireRow.Hidden = False
                       Sheets("PL").Rows("22:23").EntireRow.Hidden = False
                       Sheets("PL").Rows("39:40").EntireRow.Hidden = False
                       Sheets("PL").Rows("56:57").EntireRow.Hidden = False
                       Sheets("PL").Rows("73:74").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("47:52").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("54:59").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("61:62").EntireRow.Hidden = False
        End Select
End If
End Sub

1 Ответ

1 голос
/ 21 марта 2020

Обычно хорошей идеей является перенести основную часть вашего кода в отдельную подпрограмму и вызвать ее из обработчика событий: затем вы также можете вызывать ее из других мест

Обычный модуль:

Sheet1.SyncVis

Модуль листа:

Private Sub Worksheet_Change(ByVal Target As Range)
     CheckVis Target
End Sub

Sub SyncVis()
    Me.CheckVis Range("C8")
    Me.CheckVis Range("C52")
End Sub


Private Sub CheckVis(ByVal Target As Range)
    Dim tf As Boolean
    If Not Application.Intersect(Range("C8"), Target) Is Nothing Then
        With Range("A54,A61,A77,A93,A109,A129").EntireRow
            Select Case Target.Value
                Case "A", "C": .Hidden = True
                Case "B": .Hidden = False
            End Select
        End With
        Sheets("Proforma Inv").Visible = Target.Value = "B"
    End If

    If Not Application.Intersect(Range("C9"), Target) Is Nothing Then
        tf = Target.Value = "Debug" or Target.Value = "Soshi" 
        Rows("55").EntireRow.Hidden = tf
        Sheets("Inv").Range("A41,A48,A55,A62").EntireRow.Hidden = tf
        Sheets("Proforma Inv").Range("A39,A46,A53,A60").EntireRow.Hidden = tf 
    End If

    If Not Application.Intersect(Range("C52"), Range(Target.Address)) Is Nothing Then
        Select Case Target.Value
        Case Is = "1": Range("A72:A119,A57:A60,A62:A71").EntireRow.Hidden = True
                       Sheets("Inv").Rows("44:64").EntireRow.Hidden = True
                       Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
                       Sheets("Inv").Rows("42:43").EntireRow.Hidden = False
                       Sheets("PL").Rows("22:23").EntireRow.Hidden = False
                       Sheets("PL").Rows("39:40").EntireRow.Hidden = True
                       Sheets("PL").Rows("56:57").EntireRow.Hidden = True
                       Sheets("PL").Rows("73:74").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("42:62").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("40:41").EntireRow.Hidden = False
        Case Is = "2": Rows("88:119").EntireRow.Hidden = True
                       Rows("57:60").EntireRow.Hidden = False
                       Rows("62:76").EntireRow.Hidden = False
                       Rows("78:87").EntireRow.Hidden = False
                       Sheets("Inv").Rows("51:64").EntireRow.Hidden = True
                       Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
                       Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
                       Sheets("Inv").Rows("49:50").EntireRow.Hidden = False
                       Sheets("PL").Rows("22:23").EntireRow.Hidden = False
                       Sheets("PL").Rows("39:40").EntireRow.Hidden = False
                       Sheets("PL").Rows("56:57").EntireRow.Hidden = True
                       Sheets("PL").Rows("73:74").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("49:62").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("47:48").EntireRow.Hidden = False
        Case Is = "3": Rows("104:119").EntireRow.Hidden = True
                       Rows("57:60").EntireRow.Hidden = False
                       Rows("62:76").EntireRow.Hidden = False
                       Rows("78:92").EntireRow.Hidden = False
                       Rows("94:103").EntireRow.Hidden = False
                       Sheets("Inv").Rows("58:64").EntireRow.Hidden = True
                       Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
                       Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
                       Sheets("Inv").Rows("49:54").EntireRow.Hidden = False
                       Sheets("Inv").Rows("56:57").EntireRow.Hidden = False
                       Sheets("PL").Rows("22:23").EntireRow.Hidden = False
                       Sheets("PL").Rows("39:40").EntireRow.Hidden = False
                       Sheets("PL").Rows("56:57").EntireRow.Hidden = False
                       Sheets("PL").Rows("73:74").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("56:62").EntireRow.Hidden = True
                       Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("47:52").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("54:55").EntireRow.Hidden = False
        Case Is = "4": Rows("57:60").EntireRow.Hidden = False
                       Rows("62:76").EntireRow.Hidden = False
                       Rows("78:92").EntireRow.Hidden = False
                       Rows("94:108").EntireRow.Hidden = False
                       Rows("110:119").EntireRow.Hidden = False
                       Sheets("Inv").Rows("38:40").EntireRow.Hidden = False
                       Sheets("Inv").Rows("42:47").EntireRow.Hidden = False
                       Sheets("Inv").Rows("49:54").EntireRow.Hidden = False
                       Sheets("Inv").Rows("56:61").EntireRow.Hidden = False
                       Sheets("Inv").Rows("63:64").EntireRow.Hidden = False
                       Sheets("PL").Rows("22:23").EntireRow.Hidden = False
                       Sheets("PL").Rows("39:40").EntireRow.Hidden = False
                       Sheets("PL").Rows("56:57").EntireRow.Hidden = False
                       Sheets("PL").Rows("73:74").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("36:38").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("40:45").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("47:52").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("54:59").EntireRow.Hidden = False
                       Sheets("Proforma Inv").Rows("61:62").EntireRow.Hidden = False
        End Select
End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...