在Excel中编写宏时,您使用一种称为Visual Basic for Applications(VBA)的编程语言。它基于BASIC编程语言,具有特定于Excel的扩展名。该语言的功能之一是能够在程序中使用子例程。例如,考虑以下VBA宏:

Sub Macro1()

TestSub End Sub
Sub TestSub()

MsgBox "In the subroutine"

End Sub

这个简单的宏(Macro1)除了调用子例程(TestSub)之外什么也不做,后者又显示一个消息框,通知您该子例程在子例程中。当您单击确定以关闭该消息框时,子例程结束,并将控制权返回给主程序。您可以根据需要在VBA程序中包含任意多个子例程。每个程序的目的都是执行共同的任务,因此您不必一直重写相同的代码。

您还可以将参数传递给子例程。然后,您的子例程可以对这些参数进行操作。例如,考虑以下宏:

Sub Macro1()

A = 1     PrintIt A End Sub
Sub PrintIt(x)

MsgBox "Value: " & x End Sub

这是一个简单的宏,它设置一个变量,然后将其通过子例程调用传递给PrintIt。此子例程在消息框中显示变量的值,然后(按OK后)返回到调用程序。

请注意,该子例程不使用与传递时相同的变量名。这是因为VBA重新分配了x的值(子例程期望接收的值),使其与A的值(程序传递给子例程的值)匹配。在将参数传递给子例程时要记住的重要一点是,程序必须传递与子例程期望数量相同的参数,并且参数必须具有匹配的类型且顺序正确。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11764)适用于Office 365中的Microsoft Excel 2007、2010、2013、2016、2019和Excel。您可以在此处找到适用于Excel的较旧菜单界面的本技巧的版本: