执行特定行vba

时间:2016-06-13 15:50:13

标签: vba excel-vba excel

我无法在任何地方找到这个问题。在Visual Basic(excel)中,我可以点击F8并循环显示每一行。但是让我说我​​想开始子程序,然后在执行前两行之后,我想跳到第200行。到现在为止,我总是只是将黄色箭头拖到所需的行。这真的非常耗时,我想知道是否有任何命令只是简单地说“在选中时运行当前行”或其他东西。

此外,即使我可以开始逐行运行,并快速将黄色选定箭头移动到所需的行,这也可以。

6 个答案:

答案 0 :(得分:7)

如果你有一个200行的程序可以做很多事情你想跳过大部分,看起来你需要重构一下。

将“过程正在进行的事情”提取到他们自己的Sub过程和Function范围中。如果你有像'*** do something ***这样的类似横幅的评论,那么这就是要提取到自己的程序中的一块。

单步执行该程序可能会涉及单步执行(Shift + F8)执行一项操作的较小程序,或完全中断和跳过调用。

答案 1 :(得分:3)

右键单击要跳转到的行。点击菜单中的Set Next Statement选项。这相当于将箭头拖到那一行。 (Ctrl-F9是此操作的热键。)

如果你想让它快速执行到某一行的每一行,设置一个断点然后点击run而不是逐行逐步执行代码。通过单击左侧出现黄色箭头的灰色栏来执行此操作。应出现深红色圆点,线条应以深红色突出显示。这告诉visual basic在它到达那一行时停止。

你也可以通过以叛逆者的方式开始评论。

最后,您可以将代码分解为子程序并独立执行它们。

Sub Subroutine1()
    'This is a commented out line. It does nothing.
    MsgBox "Do stuff here"
End Sub

Sub Subroutine2()
    Subroutine1 'This will run all the code in subroutine 1
    MsgBox "Do more stuff here"
End Sub

在上面的例子中,如果你运行Subroutine1,你会弹出一个消息框。如果你运行Subroutine2,你会得到两个消息框。

答案 2 :(得分:2)

不幸的是,你不可能直接做你所要求的。

但是,您可以注释掉您要执行的代码上方的代码行,例如:

Sub Workbook_Open()
    'Application.DisplayFullScreen = True
    'Application.DisplayFormulaBar = False
    'ActiveWindow.DisplayWorkbookTabs = False
    ''ActiveWindow.DisplayHeadings = False
    Application.EnableEvents = True
    Password = "1234"
    ActiveWorkbook.Protect
    ThisWorkbook.Protect (Password = "1234")
End Sub

可能使用GoTo,但这不是一种好的做法,可能会对您的代码产生干扰:

Sub Workbook_Open()
    GoTo ExecuteCode
    Application.DisplayFullScreen = True
    Application.DisplayFormulaBar = False
    ActiveWindow.DisplayWorkbookTabs = False
    ActiveWindow.DisplayHeadings = False
    Application.EnableEvents = True
    ExecuteCode:
    Password = "1234"
    ActiveWorkbook.Protect
    ThisWorkbook.Protect (Password = "1234")
End Sub

答案 3 :(得分:1)

我就是这样做的 - 基本上如果我知道我的200行代码工作正常但是我很确定在编译之前200-300之间出现错误 - 向下滚动到第200行并标记它(在代码的左侧)。然后编译它 - 单击F5,它将执行直到第200行的所有内容 - 然后您可以单独逐步浏览每一行。

答案 4 :(得分:0)

我发现添加了一个模块来测试和复制其中的代码片段,这是进行故障排除的最佳方法。

答案 5 :(得分:-1)

我通常会注释掉我不想用撇号运行的代码行。或者,您可以将代码分解为更小的过程,以便您可以轻松选择要测试/运行的内容。