Настраиваемая перестановка столбца с использованием ссылок с другого листа - PullRequest
0 голосов
/ 17 июня 2020

Я изо всех сил пытался заставить эту работу работать так, как задумано. Как видите, у меня есть ячейка A38 в качестве диапазона, который будет определять порядок расположения столбцов. Этот номер поступает с другого листа, и всякий раз, когда я его изменяю (с листа, с которого он взят), столбцы с листа с этим кодом не меняются автоматически, мне нужно go в ячейку A38, выбрать ее и нажмите Enter, чтобы он заработал. Вы, ребята, знаете, как я могу сделать это автоматически?

.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.Volatile
ActiveSheet.Activate
If Not Application.Intersect(Range("A38"), Range(Target.Address)) Is Nothing Then
        Select Case Target.Value
        Case Is = "2": Columns("K:T").EntireColumn.Hidden = True
                            Columns("I:J").EntireColumn.Hidden = False
        Case Is = "3": Columns("L:T").EntireColumn.Hidden = True
                           Columns("I:K").EntireColumn.Hidden = False
        Case Is = "4": Columns("M:T").EntireColumn.Hidden = True
                            Columns("I:L").EntireColumn.Hidden = False
        Case Is = "5": Columns("N:T").EntireColumn.Hidden = True
                            Columns("I:M").EntireColumn.Hidden = False
        Case Is = "6": Columns("O:T").EntireColumn.Hidden = True
                            Columns("I:N").EntireColumn.Hidden = False
        Case Is = "7": Columns("P:T").EntireColumn.Hidden = True
                            Columns("I:O").EntireColumn.Hidden = False
        Case Is = "8": Columns("Q:T").EntireColumn.Hidden = True
                            Columns("I:P").EntireColumn.Hidden = False
        Case Is = "9": Columns("r:t").EntireColumn.Hidden = True
                            Columns("I:Q").EntireColumn.Hidden = False
        Case Is = "10": Columns("s:t").EntireColumn.Hidden = True
                            Columns("I:R").EntireColumn.Hidden = False
        Case Is = "11": Columns("T:T").EntireColumn.Hidden = True
                            Columns("I:S").EntireColumn.Hidden = False
        Case Is = "12": Columns("S:T").EntireColumn.Hidden = True
                            Columns("I:T").EntireColumn.Hidden = False
        End Select
End If
End Sub

1 Ответ

0 голосов
/ 17 июня 2020

Используйте Worksheet_Calculate вместо Worksheet_Change:

Private Sub Worksheet_Calculate()
    With Me
        Select Case .Range("A38").Value
            Case "2"
                .Columns("K:T").EntireColumn.Hidden = True
                .Columns("I:J").EntireColumn.Hidden = False
            Case "3"
                .Columns("L:T").EntireColumn.Hidden = True
                .Columns("I:K").EntireColumn.Hidden = False
            ' and so on
       End Select
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...