我正在尝试在一个单元格块中填写一个列表:D2:E8向下移动。当我到达D8时,我希望能够按Enter(数字或常规)并移动到E2以启动列表的第二列。我意识到我可以选项卡,输入,制表符,输入...,但是,我不想!这是我的代码:
Sub returntotop()
'
' return_to_top Macro
'
If Selection.Address = "Sheet3!$D$8" Then
Application.OnKey "~", "ActiveCell.Offset(-6, 1).Select"
End If
End Sub
但是,它什么也没做。
答案 0 :(得分:1)
您可以设计一个事件程序,以便在您尝试从D8转到D9时激活E2 - 将下面的内容粘贴到您的工作表模块中:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static mybool As Boolean
If Target.Address = Range("D8").Address Then
mybool = True
Exit Sub
End If
If mybool = True And Target.Address = Range("D9").Address Then
Range("E2").Activate
End If
mybool = False
End Sub
@ Rupedaddy - 你有没有能够解决这个问题?如果不是,你很可能将上面的代码放在错误的地方,这表明你可能不熟悉目标代码模块,所以让我试着更好地解释。
您是否看到了Project explorer窗口?类似于此http://www.excel-vba.com/zi-vbe-project-add-sheet.jpg,默认情况下应显示在VBE窗口的左上角。如果是这样,只需尝试通过它显示的树结构找到自己的方式,应该非常直观:
然后只需坚持上面的代码 - 你应该在路上。这是要求在与其关联的对象的代码模块中输入事件过程的要求。
希望这有帮助
编辑:为了适用于所有工作表,请将以下代码粘贴到Workbook目标代码模块中
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Static ws As Worksheet
If Target.Address = Range("D8").Address Then
Set ws = Sh
Exit Sub
End If
If ws Is Sh Then
Set ws = Nothing
If Target.Address = Range("D9").Address Then
Range("E2").Activate
End If
End If
End Sub