Vba 创建宏时,我需要什么设置?

Vba 创建宏时,我需要什么设置?,vba,excel,Vba,Excel,我有一堆VBA代码,我想把它们放入宏中 基本上,我调用了一组sub来更新页面 它看起来像这样: Call Update1("Work", strConn) Call Update2("Work", strConn) Call Update3("Work", strConn) 其中Update1、Update2和update3都与表单位于同一个工作表中 Public Sub Update1(strPlace, strConn) SQL code.. End Sub 我如何将其全部放入宏中?我可

我有一堆VBA代码,我想把它们放入宏中

基本上,我调用了一组sub来更新页面

它看起来像这样:

Call Update1("Work", strConn)
Call Update2("Work", strConn)
Call Update3("Work", strConn)
其中Update1、Update2和update3都与表单位于同一个工作表中

Public Sub Update1(strPlace, strConn)
SQL code..
End Sub

我如何将其全部放入宏中?我可以复制并粘贴所有不起作用的代码(包括调用吗?)。也不是只有潜艇。不确定下一步是什么。

您只需要插入一个模块作为所有这些代码的容器。除非每个 UPDATE SUB是特定于单个工作表的,那么它们可能也应该在模块中

您所有的“call”语句都需要在自己的
SUB-myMain()中。。。末端接头

完成此操作后,可以从“工具”、“宏”列表中运行它,也可以将它挂接到其他事件(自定义工具栏按钮或其他内容)中

编辑:更准确地说,您的模块应该是这样的:

Sub myMainMacro()
    '... initialize stuff
    Call Update1("Work", strConn)
    Call Update2("Work", strConn)
    Call Update3("Work", strConn)
    '... do more stuff
End Sub

Sub Update1(strPlace, strConn)
    SQL code..
End Sub

Sub Update2(strPlace, strConn)
    SQL code..
End Sub

'... other UPDATE SUBs here

Function CalculateValue(myInput as integer) as integer
    '... do calculations here
    CalculateValue = answer
End Function

所有代码(除了全局变量声明,我们没有讨论过)都需要在SUB或函数内部(函数返回值,SUB不返回值)。因为它们都在同一个模块中,所以不需要使用关键字PUBLIC。

您只需插入一个模块作为所有这些代码的容器。除非每个 UPDATE SUB是特定于单个工作表的,那么它们可能也应该在模块中

您所有的“call”语句都需要在自己的
SUB-myMain()中。。。末端接头

完成此操作后,可以从“工具”、“宏”列表中运行它,也可以将它挂接到其他事件(自定义工具栏按钮或其他内容)中

编辑:更准确地说,您的模块应该是这样的:

Sub myMainMacro()
    '... initialize stuff
    Call Update1("Work", strConn)
    Call Update2("Work", strConn)
    Call Update3("Work", strConn)
    '... do more stuff
End Sub

Sub Update1(strPlace, strConn)
    SQL code..
End Sub

Sub Update2(strPlace, strConn)
    SQL code..
End Sub

'... other UPDATE SUBs here

Function CalculateValue(myInput as integer) as integer
    '... do calculations here
    CalculateValue = answer
End Function

所有代码(除了全局变量声明,我们没有讨论过)都需要在SUB或函数内部(函数返回值,SUB不返回值)。因为它们都在同一个模块中,所以不需要关键字PUBLIC。

那么我的模块将包含所有代码?我想我的问题之一是它的语法。像这样的?Sub Module1所有代码的End Sub当我想引用它们时,我只需要写:Public Sub CommandButton1\u Click()Call Module1 End Sub是这样吗?好吧,每个
UPDATE()
都将保留它自己的Sub,那么代码的“其余”部分将需要在它自己的Sub中,这样它就有一个名称并且可以被调用。是的,您的按钮单击语法看起来正确。(仅供参考,
CALL
关键字是可选的。)很高兴知道。你说的休息是什么意思?我有一些功能,所以也许是这样?如果我把它全部放在一个子模块1中,我会是双重子模块吗?@Daniel不,你不能在子模块中嵌套子模块(或函数)。例如,请参见我的编辑。对,我想。对于函数,我将其放入模块后,它们是否有自己的宏?我也会打电话给他们?我的模块会包含所有的代码?我想我的问题之一是它的语法。像这样的?Sub Module1所有代码的End Sub当我想引用它们时,我只需要写:Public Sub CommandButton1\u Click()Call Module1 End Sub是这样吗?好吧,每个
UPDATE()
都将保留它自己的Sub,那么代码的“其余”部分将需要在它自己的Sub中,这样它就有一个名称并且可以被调用。是的,您的按钮单击语法看起来正确。(仅供参考,
CALL
关键字是可选的。)很高兴知道。你说的休息是什么意思?我有一些功能,所以也许是这样?如果我把它全部放在一个子模块1中,我会是双重子模块吗?@Daniel不,你不能在子模块中嵌套子模块(或函数)。例如,请参见我的编辑。对,我想。对于函数,我将其放入模块后,它们是否有自己的宏?所以我也会打电话给他们?