我有一个工作宏,它根据列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
答案 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