我在单元格R5中创建了一个包含名称的下拉列表,我们将其命名为Name1 Name2 Name3。我希望当用户选择某个名称时,工作表将向下滚动到特定行。例如,如果选择了名称1,我希望它转到第2行,如果选择了名称2,则选择10行,并且选择名称3的行18。该列表与我要滚动到的数据在同一工作表上。我可以使用一些代码来做到这一点吗?
答案 0 :(得分:1)
您需要使用工作表事件来处理此问题。像这样:
在具有您输入范围的工作表的工作表模块中,输入以下代码
Private Sub Worksheet_Change(ByVal Target As Range)
Dim InputRange As Excel.Range
Set InputRange = Me.Range("R5")
'// Check if the change is happening in your dropdown cell
If Not Intersect(Target, InputRange) Is Nothing Then
Select Case InputRange.Value
Case "Name1"
Application.ActiveWindow.ScrollRow = 2
Case "Name2"
Application.ActiveWindow.ScrollRow = 10
Case "Name3"
Application.ActiveWindow.ScrollRow = 18
Case Else
'//...
End Select
End If
End Sub
编辑:
如果您无法正常使用它。通过单击代码左侧的区域来尝试添加断点。当代码流到达该断点时,该断点将停止执行。这是弄清楚Excel是否甚至尝试运行此代码块的一种方法。
答案 1 :(得分:1)
假设我们在 S 和 T 列中添加了一个跳转表,例如:
行号在 T 列中。我们将下拉列表放在 R5 中,并将以下代码放入工作表代码区域:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R5 As Range, v As String, r As Range
Set R5 = Range("R5")
If Intersect(Target, R5) Is Nothing Then Exit Sub
v = R5.Value
Set r = Range("S:S").Find(what:=v, After:=Range("S1"))
Application.Goto Range("A" & r.Offset(0, 1).Value)
End Sub
只要用户在单元格 R5 中选择一个新名称,该代码就会跳到 T 列中列出的行。
由于是工作表代码,因此安装非常容易,并且自动使用:
如果有任何疑问,请先在试用工作表上尝试。
如果保存工作簿,则宏将随其一起保存。 如果您在2003年以后使用Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
要删除宏:
要全面了解有关宏的更多信息,请参见:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件宏(工作表代码)的更多信息,请参见:
http://www.mvps.org/dmcritchie/excel/event.htm
必须启用宏才能使其正常工作!
答案 2 :(得分:-1)
按键盘上的TAB键。它可能会起作用。试试吧。