Excel VBA编程 编写事件代码

Excel VBA编程编写事件代码
事件是用户对窗体和控件进行操作时做出相应的反应。

在用户窗体中每个控件都有自已的事件,如Click事件、MouseMove事件等,将事件代码放置在【代码】编辑窗口中对象的事件中,运行应用程序后,执行相应的操作,即可触发该事件中的代码。

右击控件或用户窗体,并执行【查看代码】命令,即可打开用户窗体的【代码】编辑窗口。

如图12-6所示。

图12-6 【代码】编辑窗口
【代码】编辑窗口是输入和修改应用程序代码的编辑器,每个用户窗体有且只有一个【代码】编辑窗口。

用户窗体、控件的所有事件的代码都是在这个窗口中进行编辑的。

【代码】编辑器窗口最上面是标题栏,标题栏下面的两个下拉列表框,其中,左边的列表框中包含了当前窗体中的所有对象(窗体和控件的名称);而右边的“Precedure”(过程)列表框中,则包含了与左侧列表框中选择对象相关的所有事件。

窗口下部是代码编辑区,可以在这一区域中输入要修改的代码。

当用户选定一个对象和事件后,VBE会在代码编辑区自动给出过程的框架,该过程为私有过程,用户只需在这个过程中输入代码即可。

如打开用户窗体的代码编辑窗口时,其默认打开的过程代码为:
Private Sub UserForm_Click()
End Sub
上述的代码表明该过程是个私有过程,其中,过程名称由对象名称“UserForm”、下划线“_”和事件的名称“Click”共同组成的。

提示还可以通过,右击工程窗口中的用户窗体图标,执行【查看代码】命令,打开【代码】窗口。

对象
事件
代码编辑区
事件代码。

合集下载

EXCELVBA20个有用的ExcelVBA代码

EXCELVBA20个有用的ExcelVBA代码

EXCELVBA20个有用的ExcelVBA代码1.显示多个隐藏的工作表如果你的工作簿里面有多个隐藏的工作表,你需要花很多时间一个一个的显示隐藏的工作表。

下面的代码,可以让你一次显示所有的工作表Sub UnhideAllWoksheets()Dim ws As WorksheetFor Each ws In ActiveWorkbook.Worksheetsws.Visible = xlSheetVisibleNext wsEnd Sub2.隐藏除了活动工作表外的所有工作表如果你做的报表,希望隐藏除了报表工作表以外的所有工作表,则可以用一下代码来实现:Sub HideAllExcetActiveSheet()Dim ws As WorksheetFor Each ws In ThisWorkbook.WorksheetsIf <> Thenws.Visible = xlSheetHiddenEnd ifNext wsEnd Sub3.用VBA代码按字母的顺序对工作表进行排序如果你有一个包含多个工作表的工作簿,并且希望按字母对工作表进行排序,那么下面的代码,可以派上用场。

Sub SortSheetsTabName()Application.ScreenUpdating = FalseDim ShCount As Integer, i As Integer, j As IntegerShCount = Sheets.CountFor i = 1 To ShCount - 1For j = i + 1 To ShCountIf Sheets(j).Name < Sheets(i).Name ThenSheets(j).Move before:=Sheets(i)End IfNext jNext iApplication.ScreenUpdating = TrueEnd Sub4.一次性保护所有的工作表如果工作薄里面有多个工作表,并且希望保护所有的工作表,那么下面的代码,可以派上用场。

Excel_VBA编程__窗体的事件

Excel_VBA编程__窗体的事件

Excel_VBA编程__窗体的事件Excel VBA编程窗体的事件事件是指在应用程序运行期间,在窗体(或其内的对象)上,由于用户的操作或系统内自身原因而产生的有效动作,例如单击鼠标(Click)、移动鼠标(MouseMove)等都是事件。

VBE中的对象可识别的事件是预先确定的,并不是所有对象都会具有相同事件。

但每个事件都有一个事件过程的框架与之对应,当某一事件发生时,系统将立即执行对应的事件过程,因此,如果想利用这个过程去完成指定的任务,那么用户就必须在这个对应的事件过程中编写程序代码,以便响应发生的事件,否则,即使发生了可识别的事件,系统也不会做任何操作。

下面介绍用户窗体中的一些常用事件。

1.Initialize事件Initialize事件用来提供应用程序或用户窗体中的控件、变量等进行初始化。

该事件的作用,于类模块中的该事件相同。

2.QueryClose事件该事件发生在UserForm关闭之前。

通常用这个事件确保在关闭应用程序之前,应用程序包含的用户窗体中没有未完成的任务。

该事件的语法格式如下:格式:Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)该事件括号内有两个参数。

其中,参数Cancel是一个整数的值,用于指定是否在所有加载的用户窗体中停止QueryClose事件,当Cancel的值设置为0以外的任意值时,QueryClose 事件将停止执行,并防止关闭UserForm与应用程序;参数CloseMode为一个值或常数,用来指示引起QueryClose事件的原因。

CloseMode参数返回下列的值,如表12-4所示。

表12.4 CloseMode参数的返回值“常数”是执行程序时保持常数值的命名项目。

常数可以是字符串、数值、另一常数、提示3.Termina te 事件该事件用于删除窗体中对象事例的所有引用。

7.2 Excel VBA事件程序代码的编写

7.2 Excel VBA事件程序代码的编写

' btn_cancel是布尔变量,当用户点击取消 '按钮时,此变量设为真。保证窗体删除后, '不再执行计算圆面积的后续代码。
End Sub
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
一、编写窗体(控件)的事件
操作步骤:
7、模块1中的CircleArea函数过程不用修改,其它代码修改如下:
浙江省普通高中选修课网络课程
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
一、编写窗体(控件)的事件
操作步骤:
4、在工程资源管理器窗口中,鼠标双击UserFrom1资源,在显示的
输入圆的半径窗体中,双击确定按钮,则代码区域就会出现确定按
钮的CommandButton1_Click事件过程。
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
第七章:Excel VBA 事件
7.2 Excel VBA事件程序代码的编写
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
一、编写窗体(控件)的事件
还记得我们在第六章中创建的这个窗体
吗?它提示你输入圆的半径。
浙江省普通高中选修课网络课程
Hale Waihona Puke EXCEL VBA编程入门
操作步骤:
3、打开第四章中的Function_VBA.xls文件,并另存为新文件(文件
名为:改进后的用户界面设计.xls),再按快捷键F11打开VBE编辑
器,在工程资源管理器中的空白处,单击鼠标右键,在弹出菜单中 单击【导入文件…】,把上一步导出的UserForm1.frm导入即可。 此时的VBE界面内容如下图所示。

Excel VBA编程 对象事件

Excel VBA编程  对象事件

Excel VBA 编程 对象事件
事件是当对象的某种属性状态发生改变的时候所发出的通知。

当然,很多事件是没有通知的,例如,将一本书由教室带回家,则这本书的位置状态发生了改变,但是并不会得到什么通知。

因此,可以说事件的通知大多是人为加上的。

比如你用“热得快”烧水,你可以在一定的范围内去做别的事情,当水烧开的时候,水的状态发生改变(沸腾),并激发了事件,“热得快”就会鸣响发出通知,而后你就可以在这个事件发生时去处理某些事情。

在VBA 中,事件就是发生在对象上的事情,也可以说用户对对象所做的操作(或者系统对某个对象的操作),如单击按钮、拖动对象、改变对象大小等等。

为了使得对象在某一事件发生时能够做出所需要的反应,就必须针对这一事件编写相应的程序代码来完成目标。

例如,一个对象的某个事件被编入了相应的代码,那么当软件运行时,相应的程序段就被激活,并开始执行。

如这一事件不发生,则这段程序就不会运行。

另外,如果没有编写代码的事件,即使发生也不会有任何反应。

下面来了解一下常用的事件,其功能如下表10-1所示。

表10-1 VBA 中的常用事件
提 示
焦点是在任何时间接收鼠标单击或键盘输入的能力。

在 Microsoft Windows 环境中,在同一时间只有一个窗口、窗体或控件具有这种能力。

“具有焦点”的对象通
常会以突出显示标题或标题栏来表示。

Excel VBA编程 类模块的事件

Excel VBA编程  类模块的事件

Excel VBA编程类模块的事件事件是对象可识别的动作,如按钮对象可识别Click事件。

此事件是单击该对象,然后释放鼠标时发生,它也会发生在一个控件的值被改变时。

另外,自定义类模块有Initialize事件和Terminate事件,这两个事件分别在类的实例初次创建时和最后一个指针释放或被破坏时触发。

1.Initialize事件该事件发生在加载对象之后、显示这个对象之前。

通常使用Initialize事件提供应用程序或UserForm以备用。

Initialize事件可为变量指定初始值,而且可以移动控件或调整其大小,使之与初始数据协调。

语法:Private Sub object_Initialize()其中,object代表一个对象表达式,其值为“应用于”列表中的对象。

例如,假设程序中已有两个窗体UserForms。

在UserForm1的Initialize事件中加载UserForm2,并将其显示出来。

当用户单击UserForm2时,就会将其隐含起来,而UserForm1将会出现。

而当用户单击UserForm1时,UserForm2便会再次出现。

' 这是UserForm1 的Initialize 事件过程Private Sub UserForm_Initialize()Load UserForm2UserForm2.ShowEnd Sub'这是UserForm2 的Click 事件过程Private Sub UserForm_Click()UserForm2.HideEnd Sub' 这是UserForm1 的Click 事件Private Sub UserForm_Click()UserForm2.ShowEnd Sub2.Terminate事件该事件发生在将所有引用对象的变量设置成Nothing,从而删除对象实例的所有引用,或者对象的最后一个引用超出范围。

语法:Private Sub object_Terminate( )其中,object 代表一个对象表达式,其值为“应用于”列表中的对象。

文件路径变化等触发事件、清除工作薄公式保留值、另存为其他格式文件——excel表格VBA代码

文件路径变化等触发事件、清除工作薄公式保留值、另存为其他格式文件——excel表格VBA代码

1、Private Sub Workbook_Open() '工作簿打开时触发事件如下代码:打开工作薄时自动输入密码:222222,解锁工作薄Private Sub Workbook_Open() '工作簿打开时触发ActiveWorkbook.Unprotect Password:="222222" '解锁工作簿End Sub如下代码:打开工作薄时触发事件——判断文件位置是否发生移动,当文件位置发生移动不在路径“E:\2424-外部质量\我的”文件夹中时,刷新公式运算结果,接着清除公式只保留运算数值。

Private Sub Workbook_Open() '工作簿打开时触发Dim x, y As String'定义:x, yx = "E:\2424-外部质量\我的"'赋值x原文件路径y = ThisWorkbook.Path'提取识别当前文件所在路径If y <> x Then'判断x, y是否一致,不一致说明文件已不在原路径“E:\2424-外部质量\我的”文件夹,执行Application.Calculate '刷新公式运算结果For Each sht In WorksheetsedRange.Value = edRange.Value '清除公式只保留运算数值NextExit SubEnd IfEnd Sub2、Private Sub Workbook_BeforeClose(Cancel As Boolean) '关闭工作簿时触发事件如下代码:关闭工作薄时自动锁定工作薄,密码设为:222222Private Sub Workbook_BeforeClose(Cancel As Boolean) '关闭工作簿时触发ActiveWorkbook.Protect Password:="222222" '锁定工作簿End Sub如下代码:关闭工作薄时,以.xlsx格式另存一份表格(此操作新版本的office将自动清除工作薄VBA代码,EXCEL 2007以下版本则不会清除工作薄VBA代码)Private Sub Workbook_BeforeClose(Cancel As Boolean) '关闭工作簿时触发a = '将工作薄的名称赋值给ab = Left(a, Application.Find(".", a) - 1) '删除工作薄的后缀扩展名(如:.xls)ThisWorkbook.SaveCopyAs Filename:="E:\2424-外部质量\我的\" & b & ".xlsx"' 以.xlsx格式另存一份表格ActiveWorkbook.Save '保存工作簿End Sub3、Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) '保存前触发事件4、Private Sub Workbook_Activate()'激活工作薄时触发事件。

Excel VBA编程 代码设计

Excel VBA编程代码设计
用户界面设计完毕之后,接下来就需要编写界面中各部分的事件代码(如用户窗体中的按钮和功能区中的按钮等)。

在Excel中,设置VBA应用程序时,界面设计和代码设计通过是交替进行的。

也就是说设计好一个界面后,就可以编写相应的代码。

开发人员也可以先录制修改宏代码,再和工作表或用户窗体中的相应按钮进行绑定,使其具有相应的功能。

例如,为了在工作表的B3至D10单元格区域中,使用VBA代码来设计一个创建图表程序。

只需打开代码窗口,然后,输入一段创建图表的代码,如图1-19所示。

设计代码
图1-19 设计创建图表的代码
其中,输入的创建图表代码如下:
Sub 创建图表()
'选择B3至D10单元格区域
Range("B3:D10").Select
'激活工作区选择添加图表选项
ActiveSheet.Shapes.AddChart.Select
' 激活图表选择工作表1中的B3至D10单元格区域
ActiveChart.SetSourceData Source:=Range("Sheet1!$B$3:$D$10")
' 选择图表类型为簇状柱形图
ActiveChart.ChartType = xlColumnClustered
End Sub
另外,在Windows应用程序中,都提供了在线电子文档的帮助系统。

Excel VBA也可以制作这种帮助系统。

其中,对于一些小型的应用系统,一般可不提供帮助系统。

但对于一些大型的应用系统,提供一个好的帮助系统,可让用户快速了解该应用程序的用法。

ExcelVBA高级编程:向窗体添加事件-扑奔PPT网

ExcelVBA高级编程:向窗体添加事件-扑奔PPT网Excel VBA高级编程:向窗体添加事件下面的循序渐进的过程显示了如何给窗体创建自定义事件。

要试用此练习,可打开一个新的“标准EXE”工程,并按如下面步骤去做:要将事件添加到Form1 中,请按照以下步骤执行:1.在“工程”菜单上,选择“添加类模块”,将类模块添加到工程中。

将下面的代码放置到 Class1 的“声明”部分:2.Public Property Get Form1() As Form13.Set Form1 = mForm14.End Property5.Public Property Set Form1(ByVal NewForm1 As Form1)6.Set mForm1 = NewForm1End Property如果使用过程视图,则不能同时查看属性过程。

单击代码窗口左下角的“全模块视图”按钮,转换到全模块视图。

单击过程视图旁边的“过程视图”按钮,可以返回过程视图。

(将鼠标在各个按钮上移动一下,看看哪个是哪个。

)7.将下面的代码添加到 Form1 的“声明”部分:8.Event GongPrivate mc1 As Class1因为已经创建了 Class1,所以创建 Class1 类型的变量是可能的。

这个过程要在 Form1 和 Class1 之间切换几次,因为在模块中的操作步骤,需要首先给另一个模块添加代码。

9.返回 Class1,并将下面的代码添加到“声明”部分。

Private WithEvents mForm1 As Form1就象在“向类中添加事件”所讨论的那样,WithEvents 关键字意味着 Form1 的这个实例是与事件相关联的。

注意,这一步成为可能,要到已经创建了 Gong 事件。

10.在Class1 的“代码”窗口上的左边“对象”下拉菜单上,选择“mForm1”来为Gong 事件得到事件过程。

将下面的代码添加到该事件过程中:11.Private Sub mForm1_Gong()12.MsgBox "Gong!"End Sub13.返回Form1。

使用VBA实现Excel中的自定义函数与事件触发方法

使用VBA实现Excel中的自定义函数与事件触发方法Excel是一款功能强大的办公软件,VBA(Visual Basic for Applications)是一种用于编写Excel宏的程序设计语言。

通过使用VBA,我们可以自定义函数和事件触发方法来增加Excel的灵活性和自动化程度。

本文将介绍如何使用VBA实现Excel中的自定义函数与事件触发方法,以提高工作效率和数据处理能力。

一、自定义函数(User-Defined Function)自定义函数是一种由用户编写的Excel函数,可以扩展Excel原有的函数库,实现特定功能的计算。

以下是使用VBA编写自定义函数的步骤:1. 打开Excel并按下Alt + F11打开VBA编辑器。

2. 在VBA编辑器中,选择“插入”>“模块”,新建一个模块。

3. 在模块中,编写自定义函数的代码。

下面是一个简单的例子:```vbaFunction MyFunction(ByVal input As Variant) As Variant'自定义函数的代码'input是传入的参数'需要在函数中返回计算结果End Function```4. 保存并关闭VBA编辑器。

5. 在Excel中,可以直接使用该自定义函数。

在单元格中输入`=MyFunction(A1)`,并回车执行即可。

通过自定义函数,我们可以根据需要编写各种复杂的计算公式和数据处理逻辑,优化Excel的数据分析和处理过程。

二、事件触发方法(Event Procedure)事件触发方法是一种在Excel中当特定事件发生时自动执行的代码块。

以下是使用VBA编写事件触发方法的步骤:1. 打开Excel并按下Alt + F11打开VBA编辑器。

2. 在VBA编辑器中,选择“插入”>“模块”,新建一个模块。

3. 在模块中,编写事件触发方法的代码。

下面是一个简单的例子:```vbaPrivate Sub Workbook_Open()'事件触发方法的代码'当工作簿被打开时,执行这段代码End Sub```4. 保存并关闭VBA编辑器。

7.1 Excel VBA事件


6、鼠标点选文件菜单,单击保存文件。文件名 为【第一个事件程序.xls】。
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
三、编写一个简单的事件
操作步骤:
7、返回到Excel工作界面,当你单击选中任一张 工作时,就会弹出如下的对话框。
这个事件响应与原先的点选工作表完全不同了!
浙江省普通高中选修课网络课程
简单,写一段事件过程代码即可。
浙江省普通高中选修课网络课程
ห้องสมุดไป่ตู้
EXCEL VBA
编程入门
三、编写一个简单的事件
操作步骤:
1、打开一个新的工作薄文件。 2、按快捷键F11,打开VBE编辑器。 3、在工程资源管理器中点选ThisWorkbook
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
三、编写一个简单的事件
EXCEL VBA
编程入门
第七章:Excel VBA 事件
7.1 Excel VBA事件
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
一、什么是Excel VBA事件?
事件简单来说,就是由用户或者系统触发的、
可以在代码中响应的一段代码。在Excel中,我们点
击单元格、点击窗体和按钮、选择工作表、保存工 作薄等等都会产生一系列的事件。我们可以通过编 写代码来响应这些事件,当发生此类事件时,例如 选择一个工作表,程序代码就会进行相应的操作。
这样就达到了程序的功能要求,满足了用户的需要。
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
二、常见的Excel VBA事件
描述
应用程序级的 SheetActivate 事件 发生在任一打开的工 作簿中的任一工作表 被激活时。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档