Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 2013 |尝试从一列列表的底部移动到下一列的顶部_Excel_Excel 2013_Vba - Fatal编程技术网

Excel 2013 |尝试从一列列表的底部移动到下一列的顶部

Excel 2013 |尝试从一列列表的底部移动到下一列的顶部,excel,excel-2013,vba,Excel,Excel 2013,Vba,我试图在一个单元格块中填写一个列表:D2:E8向下移动。当我到达D8时,我希望能够按enter键(数字或常规)并移动到E2以开始列表的第二列。我意识到我可以tab,enter,tab,enter…,但是,我不想!这是我的密码: Sub returntotop() ' ' return_to_top Macro ' If Selection.Address = "Sheet3!$D$8" Then Application.OnKey "~", "ActiveCell.Offset(-

我试图在一个单元格块中填写一个列表:D2:E8向下移动。当我到达D8时,我希望能够按enter键(数字或常规)并移动到E2以开始列表的第二列。我意识到我可以tab,enter,tab,enter…,但是,我不想!这是我的密码:

Sub returntotop()
'

' return_to_top Macro
'

If Selection.Address = "Sheet3!$D$8" Then
     Application.OnKey "~", "ActiveCell.Offset(-6, 1).Select"
End If

End Sub

但是,它不起任何作用。

您可以设计一个事件过程,以便在尝试从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
@爸爸,你能解决这个问题吗?如果不是的话,你很可能把上面的代码放错地方了,这表明你可能不熟悉目标代码模块,所以让我试着更好地解释一下

看到“项目资源管理器”窗口了吗?类似于此,默认情况下应显示在VBE窗口的左上角。如果是这样,请尝试通过它显示的树结构找到您的方法,这应该非常直观:

  • 查找与您感兴趣的工作簿相关的VBA项目
  • 在其下方,探索“Microsoft Excel对象”节点
  • 双击与工作表相关的子节点。这将在主代码窗口中打开工作表对象代码模块
然后把上面的代码贴在那里,你就可以上路了。这是将事件过程输入到与其关联的对象的代码模块中的要求

希望这有帮助

编辑:要使其适用于所有工作表,请将以下代码粘贴到工作簿目标代码模块中

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

选择D2:E8然后按ENTER键不适合您吗?你能说明你想要达到什么吗?我知道。我可以这么做,但我很懒,不想把它们都选出来。当我按Enter键时,我希望能够将选择从D8发送到E2。我是一个新手(非常新手)VBA“学生”,我想从中学习。我不能让它工作。告诉你们我的手机在Sheet3里有帮助吗?@Rupedaddy实际上你们需要把它放在Sheet3的代码里。你们都很棒!我以为我已经试着将上面的内容粘贴到Sheet3对象中,但显然我从来没有这样做过。现在我已经把它放在里面了。这是有道理的。感谢大家的帮助,以及与我这样的新手一起工作。我还有很长的路要走那么下一个问题,;如何在工作簿中的所有工作表中实现这一点?代码需要进入哪个位置?或者,需要添加什么才能实现这一点?