宏以显示最近使用的单元格

时间:2018-11-16 02:50:55

标签: excel vba triggers

我有一个工作宏,它根据列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 :(得分:1)

也许我从另一个答案中错读了您的问题-如果是这样,我将很乐意删除此问题。

您只需添加一个变量即可为您跟踪该变量,并且只要您保持Excel打开就可以保留。

Private lastUsedRng As Range

Private Sub Worksheet_Change(ByVal Target As Range)

    Set lastUsedRng = Target

    . . .
  

...,它将用户带到最近使用过的行

您可以通过以下方式完成此操作

lastUsedRng.Select

答案 1 :(得分:0)

尽可能少使用Select,并用类似这样的内容替换以'Go to last cell in column B开头的最后一部分,除了将其移到If...End If内内。 / p>

With Me
    .Cells(.Rows.Count, 2).End(xlUp).Select
End With