Макрос для отображения последней использованной ячейки - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть рабочий макрос, который скрывает / отображает определенные столбцы на основе определенных значений в столбце B. Я также хочу добавить еще один триггер, который переносит пользователя в последнюю использованную строку. Ниже моя попытка.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("B:B")) Is Nothing Then
        On Error GoTo safe_exit
        Application.EnableEvents = False
        Dim t As Range
        For Each t In Intersect(Target, Range("B:B"))
            Select Case (t.Value)
            Case "A"
                Columns("B:BP").EntireColumn.Hidden = False
                Columns("H:BL").EntireColumn.Hidden = True
            Case "B"
                Columns("B:BP").EntireColumn.Hidden = False
                Columns("F:G").EntireColumn.Hidden = True
                Columns("P:BP").EntireColumn.Hidden = True 
        End Select
    Next t

    End If

safe_exit:
    Application.EnableEvents = True

    'Go to last cell in column B
    With ActiveSheet
    Range("B5").Select
    Selection.End(xlDown).Select
    End With

End Sub

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Возможно, я неправильно понял ваш вопрос из другого ответа - и если это так, я буду более чем счастлив удалить его.

Вы можете просто добавить переменную, которая будет отслеживать это для вас и сохраняться до тех пор, покапока вы держите Excel открытым.

Private lastUsedRng As Range

Private Sub Worksheet_Change(ByVal Target As Range)

    Set lastUsedRng = Target

    . . .

... который переводит пользователя в последнюю использованную строку

Вы можете выполнить этос

lastUsedRng.Select
0 голосов
/ 16 ноября 2018

Используйте Select как можно меньше и замените последний раздел, начинающийся с 'Go to last cell in column B, чем-то вроде этого, за исключением перемещения его внутри If...End If.

With Me
    .Cells(.Rows.Count, 2).End(xlUp).Select
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...