-
Visual Basic For Application(VBA)教程
2011-05-29 22:02:54Visual Basic For Application(VBA)教程 -
ExcelVBA Application对象介绍
2020-02-23 21:12:11Application对象代表Excel程序本身,它就像一棵树的根,Excel中所有的对象都以它为起点。实际编程时,会经常用到它的许多属性和方法。 1.用ScreenUpdating属性设置是否更新屏幕上的内容 在使用Excel解决一个问题时...Application对象代表Excel程序本身,它就像一棵树的根,Excel中所有的对象都以它为起点。实际编程时,会经常用到它的许多属性和方法。
1.用ScreenUpdating属性设置是否更新屏幕上的内容
在使用Excel解决一个问题时,往往需要执行多步操作或计算。无论是通过手动还是VBA代码完成这些操作,默认情况下,Excel都会将每步操作所得的结果显示在屏幕上。
Application对象的ScreenUpdating属性就是控制屏幕更新的开关,将该属性设置为False,Excel将会关闭屏幕更新。
Application.ScreenUpdating=False '关闭屏幕更新 Application.ScreenUpdating=True '重新开启屏幕更新
如果在程序中将ScreenUpdating属性设置为False,一定要记得在程序结束前将其重新设置为True,否则后面执行的程序也不会更新屏幕上的内容。
2.设置DisplayAlerts属性禁止显示警告对话框
当我们在Excel中执行某些操作,如删除工作表时,Excel会显示一个警告对话框,让我们确定是否需要执行这个操作,如图1所示。
图1 删除工作表时显示的警告对话框
出于很多原因,我们都希望Excel在程序执行的过程中,不显示警告对话框,这可以通过设置Application对象的DisplayAlerts属性为False来实现。
在下面示例代码中,如果不写第2行代码,那么在执行程序中,每删除一个工作表,就会弹出一次警告框,而且只有点击【删除】按钮才会执行删除操作。如果要删除100张工作表,就需要点击【删除】按钮100次。
Sub DelSht_2() Application.DisplayAlerts = False '设置不显示警告对话框 Dim sht As Worksheet For Each sht In Worksheets If sht.Name <> ActiveSheet.Name Then '判断sht引用的是否是活动工作表 sht.Delete '删除sht引用的工作表 End If Next sht Application.DisplayAlerts = True '重新设置显示警告对话框 End Sub
如果在程序中将DisplayAlerts属性设置为False,一定要记得在程序结束前将其重新设置为True,否则后面执行任何操作都不会弹出警告对话框。
3.借助WorksheetFunction属性使用工作表函数
常用的工作表函数,如SUMIF、VLOOKUP、MATCH和COUNTIF等函数VBA中没有,但是可以使用Application对象的WorksheetFunction属性来调用这些函数。
图2 编写代码统计A1:B50单元格区域中大于1000的数据个数
如想统计图2中A1:B50单元格区域中大于1000的数值有多少个,代码可以写为:
Sub CountTest_2() Dim mycount As Integer mycount = Application.WorksheetFunction.CountIf(Range("A1:B50"), ">1000") MsgBox "A1:B50中大于1000的单元格个数为:" & mycount End Sub
注:如果VBA中已经有了相同功能的函数,就不能再通过WorksheetFunction属性引用工作表中的函数,否则会出错。并且,不是所有的工作表函数都能通过WorksheetFunction 属性来调用。
微信公众号:VBA168
淘宝店铺地址:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-21233576391.4.1af0683dzrx3oU&id=584940166162
关注微信公众号,每天及时接收Excel VBA经典示例讲解。
淘宝店铺提供Excel定制服务。
祝你工作和学习更轻松!
-
Excel VBA:Application对象
2020-01-13 19:37:59Application 对象 代表整个 Microsoft Excel 应用程序。 说明 Application 对象包括: 应用程序范围的设置和选项。 返回顶级对象的方法,如 ActiveCell 和 ActiveSheet 等。 示例 使用 Application 属性可返回...Application 对象
代表整个 Microsoft Excel 应用程序。
说明
Application 对象包括:
- 应用程序范围的设置和选项。
- 返回顶级对象的方法,如 ActiveCell 和 ActiveSheet 等。
示例
使用 Application 属性可返回 Application 对象。下例对 Application 对象应用 Windows 属性。
Application.Windows("book1.xls").Activate
下例在其他应用程序中创建 Microsoft Excel 工作簿对象,然后在 Microsoft Excel 中打开工作簿。
Set xl = CreateObject("Excel.Sheet") xl.Application.Workbooks.Open "newbook.xls"
许多属性和方法都返回最常用的用户界面对象,如活动单元格(ActiveCell 属性),这些属性和方法使用时可以不加 Application 对象识别符。例如,不必写为
Application.ActiveCell.Font.Bold = True
可写为
ActiveCell.Font.Bold = True
source:VBA Help
-
VBA Application 的四大方法
2020-03-25 16:08:30a = Application.FindFile MsgBox a If a = True Then MsgBox "dd" Else MsgBox "tt" End If End Sub getopenfilename 这个函数和findfile有点不一样,这个函数是不会打开相关文件的,只会返回...findfile
findfile 就是打开一个问题如果打卡成功,则返回为true
Sub b() a = Application.FindFile MsgBox a If a = True Then MsgBox "dd" Else MsgBox "tt" End If End Sub
getopenfilename
这个函数和findfile有点不一样,这个函数是不会打开相关文件的,只会返回文件的名字奥利给兄弟们
Sub b() a = Application.GetOpenFilename‘弹出来的名字是带着路径和后缀的 MsgBox a End Sub
FileFilter
可以选择一些相关的细节,之后可以持续补充getsaveasfilename
据说这个玩意也就是返回一个路径和名字,那和上面那个open的函数,有啥子区别啊
具体一些参数用到了之后再说吧filedialog
这个玩意也是获取路径的,获取路径的法子那么多,这个以后遇到了再说吧
-
vba的Application.Run
2020-04-28 13:17:46'module3 Sub Macro1() MsgBox 1 End Sub Sub Macro2() MsgBox 2 Application.Run "Macro1" End Sub Function f1(a) MsgBox a & "module3" f1 = a End Function 'module4 Sub maCRO2() ...'thisworkbook.module3 Sub Macro1() MsgBox 1 End Sub Sub Macro2() MsgBox 2 Application.Run "Macro1" End Sub Function f1(a) MsgBox a & "module3" f1 = a End Function
'thisworkbook.module4 Sub maCRO2() Application.Run ("Macro1") End Sub Function f1() f1 = "module4" MsgBox f1 End Function
'thisworkbook.module5 Sub test1() Application.Run "Macro2" 'ng End Sub Sub test2() Application.Run("module3.Macro2") 'ok End Sub Sub test3() f1r = Application.Run "module4.f1" 'ok End Sub Sub test4() f1r = Application.Run("module3.f1", 1) 'ok End Sub Sub test5() f1r = Application.Run("'2.xlsm'!module2.f1", 1) 'ok End Sub Sub test6() Application.Run "'2.xlsm'!module2.s1" 'ok End Sub Sub test7() Application.Run ("'C:\Users\user\Desktop\3\2.xlsm'!module2.s1") 'ok End Sub Sub test8() f1r = Application.Run("'C:\Users\user\Desktop\3\2.xlsm'!module2.f1", 1) 'ok End Sub
'2.xlsm-->module1 Sub s1() MsgBox "s1" End Sub
'2.xlsm-->module2 Sub s1() MsgBox "m2s1" End Sub Function f1(a) f1 = a MsgBox f1 End Function
调用方法:
- application.run 方法名,参数1,参数2,xxx
- application.run (方法名,参数1,参数2,xxx)
两种方法都可以,如果要返回值只能调用第二种,即result=application.run (方法名,参数1,参数2,xxx)
同一个excel文件的方法调用:
module3/4/5在同一个excel文件。module5利用application.run调用其他module的sub/function时,如果该sub/function名在所有module里唯一,可以不加模块名(推荐全加模块名)。否则报错,需要模块名.方法名调用。
模块名和方法名都不区分大小写。不同excel文件的方法调用:
- 方法1:Application.Run " ‘文件名’ “!模块名.方法名”
- 方法2:Application.Run " ‘路径+文件名’ “!模块名.方法名”
必须带上文件名和模块名,即使方法在该文件唯一。且文件名两边有单引号,文件名和模块名间有!。
如果被调用的工作簿是打开状态,方法1和方法2都可以。如果是关闭状态,方法2会打开路径+文件名进行调用,方法1会打开当前文件路径+文件名进行调用。
-
【VBA研究】Application.Calculation状态影响VBA运行速度
2015-01-05 17:21:33发现一个现象,当Application.Calculation为自动计算状态时,如果工作表中存有公式,2003版似乎并不降低VBA的运行速度,但2007版则影响很大,速度降低的特别明显,尤其是数据量大时,速度降低的令人难以忍受。... -
vba excel 退出编辑状态_VBA小常识(15)—Application对象
2020-11-22 11:10:11VBA小常识(15)—Application对象学习自杨洋老师《全民一起学VBA》Application是位于最顶端的对象,代表excel程序本身,所有对象都属于它。1. application.cells当前处于激活状态的工作表,即“活动工作表”的... -
vba Application.OnTime 定时器
2013-02-02 09:33:00最近做了一个vba的小项目,用到了 Application.OnTime 定时器。Application.OnTime 常用于 vba excel 定时执行,页面刷新等方面,但关闭时excel时会遇到一些问题,比如不注销,定时器,excel 无法关闭。注销时报错等... -
Excel VBA - Application对象
2011-10-27 23:05:42Application.Version 显示Excel的版本号 Application.UserName 显示当前用户的用户名 Application.StatusBar = "状态栏" 状态栏显示内容 Application.StatusBar = False 状态栏不显示内容 Application.Wait ... -
【VBA研究】VBA的InputBox函数和Application的InputBox方法
2016-11-28 15:26:01VBA编程时inputbox 有两种用法,一个是inputobx函数,一个是application.inputbox方法,两者用法差不多,差别在后者多了输入类型,导致返回值也有很大不同。 1、inputobx函数在输入字符串后点击“确认”按钮返回字符... -
Excel VBA(1) Application Object
2019-06-23 18:19:15The Active Properties ActiveCell ActiveChart ActivePrinter ActiveSheet ActiveWindow ActiveWorkbook Selection Display Alerts Application.DisplayAlerts = False ’operatio... -
VBA,Application对象的常用属性和方法
2020-02-01 12:22:051 Application 对象的常见属性 1.0对象管理器里可以查看application的所有属性,方法 Dim i As cell 错误,没有这种类型定义 只能 dim i as range dim sh as sheet dim wb as workbook 1.1 Application... -
application_development_in_the_environment_VBA:课程中的实验室工作环境中的应用程序开发VBA-源码
2021-04-03 07:15:17application_development_in_the_environment_VBA 课程中的实验室工作环境中的应用程序开发VBA -
VBA学习笔记之Application.intersection方法
2019-09-26 00:37:16'Application.Intersect 方法'返回一个 Range 对象,该对象表示两个或多个区域重叠的矩形区域。 PS:Is Nothing 用于判断对象是否存在,对象可以是工作簿,工作表,单元格区域等 教学代码: 1 Sub test() 2 ... -
【VBA编程】11.Application对象
2019-10-01 15:42:55Application对象常用属性【ActiveCell属性】ActiveCell属性返回一个Range对象,表示当前窗口或指定窗口中的单元格。如果窗口没显示工作表,则此属性无效。【代码区域】 Sub 激活单元格() Worksheets("sheet1").... -
10_Application对象的ScreenUpdating属性_ExcelVBA其实很简单视频导读
2018-05-26 15:48:0910_Application对象的ScreenUpdating属性_ExcelVBA其实很简单视频导读 -
Excel VBA:文件选择——Application.FileDialog
2020-01-13 20:28:11FileDialog 对象 提供文件对话框,其功能与 Microsoft Office 应用程序中标准的...FileDialog 属性位于每个单独 Office 应用程序的 Application 对象中。该属性使用一个参数 DialogType确定该属性返回的 FileDialo... -
加速Visual Basic For Application(VBA)(转)
2007-07-08 11:09:46笔者曾见过一位朋友正在编写一段程序,用的是VBA,程序代码如下: With ActiveWindow If WindowS tate = wd WindowS tateMaximize Then 'this is the first part! MsgBox "This is a Maximize Window" ... -
offset,application---VBA应用
2008-09-02 14:21:00应用APPLICATION时候dim wk as workbookset wk = application.workbooks.open()可以在后台打开EXCEL文件,并在前台显示 dim wk as workbookdim app as new applicationset wk = app .workbooks.open()可以在后台...