VBA教程0108VBA代表VisualBasicforApplications,它是一个来自Microsoft的事件驱动的编程语言。现在它主要用于MicrosoftOffice应用程序,如MSExcel,MS-Word和MS-Access。本教程将讲解VBA的基础知识。每个部分都包含相关的主题和简单有用的示例。为什么使用VBA?为什么需要使用VBA在Excel中为MS-Excel本身提供了内置功能。MS-Excel提供了唯一的基本内在功能(函数),但是不足以执行复杂的计算。在这些情况下,VBA变成一种最明显好的解决方案。一个最好的例子是非常难使用Excel内置计算贷款每月还款数,但使用VBA就很容易编写实现这样计算。VBA代表VisualBasic应用程序,是来自微软的事件驱动编程语言,目前主要有MicrosoftOffice应用程序,如MS-Excel,MS-Word和MS-Access中使用。它可以帮助技术人员构建自定义的应用程序和解决方案,以增强这些应用程序的功能。这个设计的好处是,我们不必把VisualBasic安装我们的PC上,但安装Office将隐帮助我们达到目的。可以在所有Office版本(从微软Office97至微软Office2016)直接使用最新版本VBA。其中Excel的VBA是最流行的一种,并且我们可以建立在MSExcel中使用VBA非常强大的工具,包括使用线性程序。读者这个VBA教程是为初学者准备的,帮助他们理解VBA的基础知识。本教程中提供足够的VBA理解,可以通过此教程获取更高层次的专业知识。前提条件在继续本教程之前,需要安装MSOffice,尤其是MS-Excel,还应该对计算机编程术语有基本的了解。有任何编程语言的基本了解将有助于您了解VBA编程中的概念,并能让您能快速学习和上手。问题反馈我们不能保证您在此VBA教程中不会遇到任何问题。本教程中的讲解,示例和代码等只是根据作者的理解来概括写出。由于作者水平和能力有限,因此不能保证所有的编写文章和示例均能准确无误。但是如果有遇到任何错误或问题,请反馈给我们,我们会及时纠正以方便后继读者阅读.VBA概述VBA代表VisualBasicforApplications,这是一种来自Microsoft的事件驱动编程语言,现在主要与MicrosoftOffice应用程序(如MSExcel,MS-Word和MS-Access)一起使用。它帮助技术人员构建定制的应用程序和解决方案,以增强这些应用程序的功能。这个工具的优点是不需要在电脑上安装visualbasic,直接从安装Office软件中就能隐含地使用来达到目的。您可以在所有Office版本中使用VBA,从MS-Office97到MS-Office2016以及任何最新版本。在VBA中,ExcelVBA是最流行的。使用VBA的好处是可以使用线性编程在MSExcel中建立非常强大的工具。注意:在本教程中,我们也将基于ExcelVBA来演示和讲解。VBA的应用在学习本教程时,您可能想知道为什么在Excel中使用VBA,因为MS-Excel本身就有提供了大量的内置函数,真的还有需要VBA玩意儿吗?MS-Excel提供的函数或功能可能不足以执行复杂计算的基本内置功能。在这种情况下,VBA就成为解决这些复杂计算的一种最优方案了。例如,使用Excel的内置公式计算贷款的每月还款是非常困难的。相反,编写一个VBA程序来进行这样的计算是很容易的。访问VBA编辑器在Excel窗口中,找到开发工具-VisualBasic,或按ALT+F11。VBA窗口打开,如以下屏幕截图所示-VBAExcel宏123720在本章中,我们来学习如何逐步编写一个简单的宏。第1步-首先,在Excel2016中启用“开发者”菜单。要完成这个设置,请点击左上角菜单:文件-选项。如下图所示-第2步-点击“自定义功能区”选项卡并选中“开发工具”。然后点击“确定”。如下图所示-第3步-“开发工具”功能区出现在菜单栏中。如下图所示-第4步-点击“VisualBasic”按钮打开VBA编辑器。如下图所示-第5步-通过添加一个按钮启动脚本。点击插入-选择按钮。如下图所示-第6步-右键单击按钮并选择“属性”。如下图所示-第7步-编辑名称和标题,如下面的截图所示-第8步-现在双击该按钮,将显示子程序编写区域,如下图所示-第9步-通过简单编码,添加一条消息,运行并测试。如下图所示-PrivateSubsay_hello_Click()MsgBoxHi,欢迎您学习VBA~!EndSub第10步-点击按钮执行子程序,子程序的输出如下图所示-这样一个简单的VBA程序就编写完成了。在下面的章节中,我们将使用一个简单的按钮进行演示,如步骤1到10所述。因此,彻底理解本章对后续的学习是非常重要的(如有不太明白,需要将本章多看几次)。VBA术语在本章中,将介绍常用的ExcelVBA术语。这些术语将在很多的模块中使用,因此理解其中的每一个术语都很重要。模块模块是编写代码的区域。如下图中,这是一个新的工作簿,因此没有任何模块。要插入模块,请导航到插入-模块。当插入模块之后,就会有一个名称为“模块1”的模块被创建了。如下图所示-插入模块完成之后,就可以在模块中编写VBA代码,代码写在一个过程(Sub)中。一个过程/子过程是一系列的VBA语句,指示要做什么工作。如下图所示-程序/过程程序(也叫作过程)是作为一个整体执行的一组语句,它指示Excel如何执行特定的任务。执行的任务可能是一个非常简单或非常复杂的任务。不过,把复杂的程序分解成小的程序是一个很好的做法。程序的两种主要类型,它们分别是:子程序(Sub)和函数(Function)。下面是一段简单的代码-函数函数是一组可重用的代码,可以在程序中的任何地方调用。这消除了一遍又一遍地编写相同的代码的需要。这有助于程序员将大型程序划分为许多小型且可管理的功能。除了内置函数外,VBA还允许编写用户定义的函数,并在Function和EndFunction关键字之间写入语句。子过程子程序的功能与功能类似。虽然子程序没有返回值,函数可能会或不会返回一个值。子程序可以不使用call关键字调用。子程序总是在Sub和EndSub之间包含执行的语句。VBA宏注释123740注释用于记录程序逻辑和用户信息,其他程序员将来可以阅读并理解相同的代码无缝工作。它包括由开发者,修改者以及还可以包括合并逻辑的信息。解释器在执行时忽略注释。VBA中的注释用两种方法表示,它们分别如下-任何以单引号(')开头的语句都被视为注释。以下是注释的一个例子。'ThisScriptisinvokedaftersuccessfullogin'Writtenby:YiibaiYiibai'ReturnValue:True/False任何以关键字REM开头的语句。以下是注释的一个例子。REMThisScriptiswrittentoValidatetheEnteredInputREMModifiedby:YiibaiYiibai/user2VBA消息框(MsgBox)123750MsgBox函数显示一个消息框,并等待用户点击一个按钮,然后根据用户点击的按钮执行相关的操作。语法MsgBox(prompt[,buttons][,title][,helpfile,context])参数说明prompt-必需的参数。在对话框中显示为消息的字符串。提示的最大长度大约为1024个字符。如果消息扩展为多行,则可以使用每行之间的回车符(Chr(13))或换行符(Chr(10))来分隔行。buttons-可选参数。一个数字表达式,指定要显示的按钮的类型,要使用的图标样式,默认按钮的标识以及消息框的形式。如果留空,则按钮的默认值为0。title-可选参数。显示在对话框的标题栏中的字符串表达式。如果标题留空,应用程序名称将被放置在标题栏中。helpfile-可选参数。一个字符串表达式,标识用于为对话框提供上下文相关帮助的帮助文件。Context-可选参数。一个数字表达式,用于标识由帮助作者分配给相应帮助主题的帮助上下文编号。如果提供上下文,则还必须提供helpfile。Buttons参数可以使用以下任何值-0vbOKOnly-仅显示“确定”按钮。1vbOKCancel-显示“确定”和“取消”按钮。2vbAbortRetryIgnore-显示“中止”,“重试”和“忽略”按钮。3vbYesNoCancel-显示“是”,“否”和“取消”按钮。4vbYesNo-显示“是”和“否”按钮。5vbRetryCancel-显示“重试”和“取消”按钮。16vbCritical-显示严重消息图标。32vbQuestion-显示警告查询图标。48vbExclamation-显示警告消息图标。64vbInformation-显示信息消息图标。0vbDefaultButton1-第一个按钮是默认的。256vbDefaultButton2-第二个按钮是默认的。512vbDefaultButton3-第三个按钮是默认的。768vbDefaultButton4-第四个按钮是默认的。0vbApplicationModal应用程序模式-当前的应用程序将不会工作,直到用户响应消息框。4096vbSystemModal系统模式-所有的应用程序将不会工作,直到用户响应消息框。上述值在逻辑上分为四组:第一组(0至5)指示要在消息框中显示的按钮。第二组(16,32,48,64)描述要显示的图标的样式,第三组(0,256,512,768)指示哪个按钮必须是默认的,第四组(0,4096)确定消息框的形式。返回值MsgBox函数可以返回以下值之一,可用于标识用户在消息框中单击的按钮。vbOK-确定按钮被点击。vbCancel-取消按钮被点击。vbAbort-中止按钮被点击。vbIgnore-忽略按钮被点击。vbYes-是按钮被点击。vbNo-否按钮被点击。示例FunctionMessageBoxDemo()'MessageBoxwithjustpromptmessage'MsgBox(欢迎您~)'MessageBoxwithtitle,yesnoandcancelButttons'result=MsgBox(你喜欢蓝色吗?,3,选择一个选项)'AssumethatyoupressNoButton'MsgBox(返回result的值是:&result)EndFunction输出结果第1步-上述功能函数可以通过单击VBA窗口上的“运行”按钮或通过从Excel工作表调用函数来执行,如以下屏幕截图所示-运行子程序-第2步-显示一个简单的消息框,并显示消息“欢迎”和“确定”按钮第3步-点击确定后,另一个对话框会显示一个消息,同时显示“是,否和取消”按钮。第4步-点击“否”按钮后,该按钮(7)的值将被存储为一个整数,并显示为一个消息框给用户,如以下屏幕截图所示。使用这个值,可以理解用户点击了哪个按钮。VBA输入框(InputBox)123760InputBox函数提示用户输入值。当输入值后,如果用户单击确定按钮或按下键盘上的ENTER键,InputBox函数将返回文本框中的文本。如果用户单击“取消”按钮,该函数将返回一个空字符串()。语法InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])参数说明Prompt-必需的参数。在对话框中显示为消息的字符串。提示的最大长度大约为1024个字符。如果消息扩展为多行,则可以使用每行之间的回车符(Chr(13))或换行符(Chr(10))来分隔行。title-一个可选参数。显示在对话框的标题栏中的字符串表达式。如果标题留空,应用程序名称将被放置在标题栏中。default-一个可选参数。用户希望显示的文本框中的默认文本。xpos-一个可选参数。X轴的位置表示水平从屏幕左侧的提示距离。如果留空,则输入框水平居中。ypos-一个可选参数。Y轴