为什么这个VBA代码有编译错误:Expected End Sub?

时间:2016-06-14 00:59:16

标签: excel vba macros

Sub work()
    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Target = Target * 1000
    Application.EnableEvents = True
End Sub

我找到了一种通过不使用excel来解决这个问题的方法。我用R来解决这个问题。只需一个提示,如果您有很多数据,请不要使用Excel。这是致命的缓慢和复杂。任何人都可以更简单的方式使用R或Python。

2 个答案:

答案 0 :(得分:0)

你必须使用1结束sub。 sub work()和private sub ....

Sub work() 

Private Sub Worksheet_Change(ByVal Target As Range) 

Application.EnableEvents = False Target = Target * 1000 Application.EnableEvents = True 

End Sub

答案 1 :(得分:0)

我不相信VBA允许嵌套的子程序或函数(虽然我认为VB"正确的"可以做到这一点。)

你的问题是你正在开始第二个子程序,而第一个子程序仍处于活动状态"这就是为什么它会抱怨。

最简单的解决方案,假设需要两个子程序,可能只是将子程序分开而不是试图嵌套它们。

但是,由于您的代码段中不清楚为什么您需要work(),因此可能就是您只需删除该行并且只需{ {1}}子程序,类似于:

Worksheet_Change()

如果你需要一个单独的功能,基本上做同样的事情,写它(单独),以便它调用那个,或将代码的内容放入单独的< / em>子例程由Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target = Target * 1000 Application.EnableEvents = True End Sub work()调用。