Excel vba零基础学习实例拆分讲解Excel vba零基础学习实例拆分讲解vba代码一.docx
《Excel vba零基础学习实例拆分讲解Excel vba零基础学习实例拆分讲解vba代码一.docx》由会员分享,可在线阅读,更多相关《Excel vba零基础学习实例拆分讲解Excel vba零基础学习实例拆分讲解vba代码一.docx(19页珍藏版)》请在冰豆网上搜索。
![Excel vba零基础学习实例拆分讲解Excel vba零基础学习实例拆分讲解vba代码一.docx](https://file1.bdocx.com/fileroot1/2023-2/3/d2e7d99e-6d64-480d-9e67-2fc3fb759aae/d2e7d99e-6d64-480d-9e67-2fc3fb759aae1.gif)
Excelvba零基础学习实例拆分讲解Excelvba零基础学习实例拆分讲解vba代码一
Excelvba零基础学习—实例拆分讲解vba语言
(一)
零基础的人,看代码就像看天书一样,感觉晦涩难懂。
小编觉得,想学好vba,首先要先能看懂代码的含义。
但是,单纯的代码讲解,对于没基础的人又很单调。
所以,本书主要通过结合实例分析将个代码的释义一一讲解。
注意:
黑色字体为程序代码;蓝色字体为代码讲解;红色字体为重点理解;
示例01-01:
体验开/关屏幕更新(ScreenUpdating属性)
Sub关闭屏幕更新()
MsgBox"顺序切换工作表Sheet1→Sheet2→Sheet3→Sheet2,先开启屏幕更新,然后关闭屏幕更新"
Msgbox"这是我的第一个过程"
在输入Msgbox后,运行后,会自动弹出一个消息框告诉你有关这条命令的信息,称之为自动列表技术。
MsgBox按钮设置:
vbOKOnly0仅显示确定按钮,这是默认值
vbOKCancel1显示确定和取消按钮
vbAbortRetryIgnore2显示终止,重试和忽略按钮
vbYesNoCancel3显示是,否和取消按钮
vbYesNo4显示是和否按钮
vbRetryCancel5显示重试和取消按钮
图标设置
vbCritical16显示重要信息图标
vbQuestion32显示问号图标
vbExclamation48显示警告信息图标
vbInformation64显示信息图标
默认按钮设置
vbDefaultButton10第一个按钮是缺省值
vbDefaultButton2256第二个按钮是缺省值
vbDefaultButton3512第三个按钮是缺省值
vbDefaultButton4768第四个按钮是缺省值
信息框形式
vbApplicationModal0应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。
vbSystemModal4096系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。
MsgBox显示的其它设置
vbMsgBoxHelpButton16384将Help按钮添加到消息框
vbMsgBoxSetForeground65536指定消息框窗口作为前景窗口
vbMsgBoxRight524288文本为右对齐
vbMsgBoxRtlReading1048576指定文本应为在希伯来和阿拉伯语系统中的从右到左显示
Worksheets
(1).Select
Sheets(XXX).Select、Range(XXX).Select:
选择工作表、范围
MsgBox"目前屏幕中显示工作表Sheet1"
Application.ScreenUpdating=True
获取当前应用程序名称?
Application.Name
将Excel应用程序标题改为“MyApplication”Application.Caption="MyApplication"将Excel应用程序标题改回为“MicrosoftExcel”
Application.Caption="MicrosoftExcel"
获取你正在使用的操作系统?
Application.OperatingSystem
获取该应用程序注册的人名或公司名?
Application.OrganizationName
获取Excel.exe保存的文件夹路径?
Application.Path
退出ExcelApplication.Quit
Application.Dialogs(xlDialogFont).Show
如果你在对象浏览器里面选择Excel库后,再输入xlDialog搜索的话,那些代表Excel内置对话框的
Screenupdating是Application的一个属性,是Boolean数据类型,意思是屏幕是否关闭。
Worksheets
(2).Select
MsgBox"显示Sheet2了吗?
"
Worksheets(3).Select
MsgBox"显示Sheet3了吗?
"
Worksheets
(2).Select
MsgBox"下面与前面执行的程序代码相同,但关闭屏幕更新功能"
Worksheets
(1).Select
MsgBox"目前屏幕中显示工作表Sheet1"&Chr(10)&"关屏屏幕更新功能"
Application.ScreenUpdating=False
Application.ScreenUpdating=false'关闭屏幕更新,以加快宏运行速度
Application.ScreenUpdating=True'打开屏幕更新,以加快宏运行速度
Worksheets
(2).Select
MsgBox"显示Sheet2了吗?
"
Worksheets(3).Select
MsgBox"显示Sheet3了吗?
"
Worksheets
(2).Select
Application.ScreenUpdating=True
EndSub
示例说明:
ScreenUpdating属性用来控制屏幕更新。
当运行一个宏程序处理涉及到多个工作表或单元格中的大量数据时,若没有关闭屏幕更新,则会占用CPU的处理时间,从而降低程序的运行速度,而关闭该属性则可显著提高程序运行速度。
示例01-02:
使用状态栏(StatusBar属性)
SubtestStatusBar()
Application.DisplayStatusBar=True'开启状态栏显示
Application.DisplayStatusBar告诉VB打开状态栏的显示
'赋值状态栏显示的文本
Application.StatusBar="你好"
EndSub
示例说明:
StatusBar属性用来指定显示在状态栏上的信息。
若不想再显示状态栏文本,可使用Application.StatusBar=False语句关闭状态栏显示,也可以在程序开始将原先的状态栏设置存储,如使用语句oldStatusBar=Application.DisplayStatusBar将状态栏原来的信息存储在变量oldStatusBar,在程序运行完成或退出时,将变量重新赋值给状态栏,如使用语句Application.DisplayStatusBar=oldStatusBar,以恢复状态栏原状。
示例01-03:
处理光标(Cursor属性)
SubViewCursors()
Cursor属性、Cursor类和Cursors类来更改鼠标光标。
Application.Cursor=xlNorthwestArrow
MsgBox"您将使用箭头光标,切换到Excel界面查看光标形状"
Application.Cursor=xlIBeam
MsgBox"您将使用工形光标,切换到Excel界面查看光标形状"
Application.Cursor=xlWait
MsgBox"您将使用等待形光标,切换到Excel界面查看光标形状"
Application.Cursor=xlDefault
MsgBox"您已将光标恢复为缺省状态"
EndSub
示例01-04:
获取系统信息
SubGetSystemInfo()
MsgBox"Excel版本信息为:
"&Application.CalculationVersion
MsgBox"Excel当前允许使用的内存为:
"&Application.MemoryFree
MsgBox"Excel当前已使用的内存为:
"&Application.MemoryUsed
MsgBox"Excel可以使用的内存为:
"&Application.MemoryTotal
MsgBox"本机操作系统的名称和版本为:
"&Application.OperatingSystem
MsgBox"本产品所登记的组织名为:
"&Application.OrganizationName
MsgBox"当前用户名为:
"&Application.UserName
MsgBox"当前使用的Excel版本为:
"&Application.Version
EndSub
示例说明:
可以使用给UserName属性赋值以设置用户名称。
示例01-05:
退出复制/剪切模式(CutCopyMode属性)
SubexitCutCopyMode()
Application.CutCopyMode=False
EndSub
示例说明:
退出复制/剪切模式后,在程序运行时所进行的复制或剪切操作不会在原单元格区域留下流动的虚框线。
需要提醒的是,在程序运行完后,应使用Application.CutCopyMode=False语句恢复该属性的默认设置。
示例01-06:
禁止弹出警告信息(DisplayAlerts属性)
SubtestAlertsDisplay()
alert()方法用于显示带有一条指定消息和一个OK按钮的警告框
Application.DisplayAlerts=False
EndSub
示例说明:
在程序运行过程中,有时由于Excel本身设置的原因,会弹出对话框,从而中断程序的运行,您可以在程序之前加上Application.DisplayAlerts=False语句以禁止弹出这些对话框而不影响程序正常运行。
需要注意的是,在程序运行结束前,应使DisplayAlerts属性恢复为缺省状态,即使用语句Application.DisplayAlerts=True。
该属性的默认设置为True,当将该属性设置为False时,Excel会使直接使用对话框中默认的选择,从而不会因为弹出对话框而影响程序运行。
示例01-07:
将Excel全屏幕显示
SubtestFullScreen()
MsgBox"运行后将Excel的显示模式设置为全屏幕"
Application.DisplayFullScreen=True
Displayn.
展览,陈列;陈列品,展览品;显示器;炫耀
vt.
显示;陈列;展开,伸展;夸示,炫耀
vi.
(计算机屏幕上)显示
MsgBox"恢复为原来的状态"
Application.DisplayFullScreen=False
EndSub
示例01-08:
Excel启动的文件夹路径
SubExcelStartfolder()
folder是指用于文件柜的文件夹或单独的文件夹,用于电脑则是贮存器中的电脑文件夹。
MsgBox"Excel启动的文件夹路径为:
"&Chr(10)&Application.StartupPath
startup1.启动2.启动选项3.启动数据库4.在启动时打开进程计数
EndSub
示例01-09:
打开最近使用过的文档
SubOpenRecentFiles()
FILE是在stdio.h定义的保存文件流信息的一个结构体类型(也可能是在其它文件中定义了另外的数据类型,然后通过typedef定义FILE
MsgBox"显示最近使用过的第三个文件名,并打开该文件"
MsgBox"最近使用的第三个文件的名称为:
"&Application.RecentFiles(3).Name
字符&必须用于每次你要在前面的字符串后加新信息的时候
字符&可以连接任何字符串
字符串的连接字符(&)用来返回连接字符串的字符。
Application.RecentFiles(3).Open
EndSub
示例01-10:
打开文件(FindFile方法)
SubFindFileOpen()
OnErrorResumeNext
MsgBox"请打开文件",vbOKOnly+vbInformation,"打开文件"
vbOKOnly0仅显示确定按钮,这是默认值
vbOK-按确定
vbCancel-按取消
vbAbort-按放弃
information是英文单词,基本词义:
信息
IfNotApplication.FindFileThen
If…Then…Else语句:
条件语句,如何符合条件,则返回什么,否则,则返回什么;
IfconditionThen[statements][Elseelsestatements]statement:
声明;报告;陈述句
如1:
IfA>BAndC或IfconditionThen
[statements]
[ElseIfcondition-nThen
[elseifstatements]...
[Else
[elsestatements]]
EndIf
MsgBox"文件未找到",vbOKOnly+vbInformation,"打开失败"
EndIf
EndSub
示例说明:
本示例将显示“打开”文件对话框,若用户未打开文件(即点击“取消”按钮),则会显示“打开失败”信息框。
示例中使用了FindFile方法,用来显示“打开”对话框并让用户打开一个文件。
如果成功打开一个新文件,则该值为True。
如果用户取消了操作并退出该对话框,则该值为False。
示例01-11:
文件对话框操作(FileDialog属性)
SubUseFileDialogOpen()
Dialog会话,对话;问答,对白;问答题,对话体;“dialogue”的变体
v.
对话;用对话表达
DimlngCountAsLong
Dim变量as类型'定义为局部变量,如Dimxyzasinteger
Dim变量名AS数据类型
这条语法中的变量名代表将要创建的变量名.对变量的命名规则和对过程的命名规则相同.
这条语句中的数据类型部分可以是表4-1中的任何一种数据类型.
变量名必须以字母开始,并且只能包含字母数字和特定的特殊字符,不能包含空格句号惊叹
号,也不能包含字符@&$#.名字最大长度为255个字符
Dims考试成绩(14)AsInteger
声明数组时的另一种方法是不给定大小。
可以在程序运行时定义其大小。
通过创建动态数
组就可以做到。
例如,你的程序要创建一表格,可以提示用户输入表格的行和列的数目。
声明动态数组的语法如下:
Dimdyn_array()Astype
对数组声明后可以在程序运行时用:
ReDim语句指定数组的大小:
ReDimdyn_array()(array_size)
参数array_size代表数组的新大小。
如果要保留数组的数值,请在ReDim语句后使用保留
Dimi人数AsInteger
Dimi考试成绩AsInteger
DimiAsInteger
i人数=inputbox("输入学生的人数:
")
ReDimPreservei考试成绩(i数量)
Fori=1toi人数
i考试成绩(i)=inputbox("输入考试成绩"&i)
Next
'开启"打开文件"对话框
WithApplication.FileDialog(msoFileDialogOpen)
使用FileDialogFilters集合的Clear方法清除所有预设的过滤器。
当你从文件打开对话框里选择一个文件时,该被选择的文件名称和路径就会被放置在FileDialogSelectedItems集合里。
.AllowMultiSelect=True
通过设定FileDialog对象的AllowMultiSelect属性为True,用户就可以同时按下Shift键或者Ctrl键和文件名称,选择一个或多个文件。
接下来的过程示范了如何使用上面提及的属性,该过程打开一个新的工作簿并且插入一个列表框控件。
.Show
'显示所选的每个文件的路径
ForlngCount=1To.SelectedItems.Count
使用SelectedItems属性可以返回FileDialogSelectedItems集合。
计算Excel工作表里总单元格数?
Cells.Count
计算Excel工作表里总行数?
Rows.Count
计算Excel工作表里总列数?
Columns.Count
获得打开的工作簿数目?
Workbooks.Count
MsgBox.SelectedItems(lngCount)
NextlngCount
EndWith
EndSub
示例说明:
本示例显示“打开文件”对话框,当用户在其中选择一个或多个文件后,将依次显示每个文件的路径。
其中,FileDialog属性返回打开和保存对话框中一系列对象的集合,您可以对该集合对象的属性进行进一步的设置,如上例中的AllowMultiSelect属性设置为True将允许用户选择多个文件。
示例01-12:
保存Excel的工作环境
Sub保存Excel的工作环境()
MsgBox"将Excel的工作环境保存到D:
\ExcelSample\中"
Application.SaveWorkspace"D:
\ExcelSample\Sample"
EndSub
示例说明:
运行本程序后,将工作簿以带后缀名.xlw保存到D盘的ExcelSample文件夹中,生成的文件全名为Sample.xlw。
当改变工作簿并保存时,Excel会询问是覆盖原文件还是保存副本。
示例01-13:
改变Excel工作簿名字(Caption属性)
SubSetCaption()
Application.Caption="MyExcelBook"
EndSub
示例说明:
运行本程序后,将工作簿左上角Excel图标右侧的“MicrosoftExcel”改为“MyExcelBook”。
示例01-14:
使用InputBox方法
SubSampleInputBox()
InputBox函数显示一个信息提示用户输入数据,这个对话框有两个按钮——“确定”和“取消”,当你点击确定时,InputBox函数返回用户输入在信息框里的信息;当你点击取消时,函数则返回空字符串(””)。
InputBox函数的语法显示如下:
InputBox(prompt[,title][,default][,xpos][,ypos]_[,helpfile,context])
第一个参数,prompt,是你想要显示在对话框上的信息,你可以使用函数Chr(13)或Chr(10)将长文本打断为几行(参见本章中使用MsgBox函数的例子)。
剩下所有的参数都是可选的。
第二个参数,title,让你改变对话框的默认标题,默认的标题是MictosoftExcel。
InputBox函数的第三个参数,default,让你在文本框里显示一个默认值,如果你忽略这个参数的话,显示的将是空白编辑框。
接下来的两个参数,xpos和ypos,允许你设置该对话框在屏幕上出现的位置,如果你忽略这两个参数,对话框就会出现了当前窗口的中央,xpos参数决定对话框在屏幕上从左起的水平位置,忽略它时,对话框显示在水平中央,而ypos参数决定对话框在屏幕从上而下的竖直位置,忽略它,对话框就在竖直大约三分之一的位置。
xpos和ypos都使用一个叫twips的专门单位衡量,1twip大约等于0.0007英寸。
helpfile和context,帮助文件(helpfile)和上下文(context)。
参数helpfile指明某个包含你要显示给用户的附加信息的具体帮助文件的名称,当你明确了这个参数后,Help按钮就会在信息框上显示出来。
当你使用helpfile参数时,你同时也使用context参数。
这个参数表明在帮助文件里你要显示的那个帮助主题。
DimvInput
vInput=InputBox("请输入用户名:
","获取用户名",Application.UserName)
MsgBox"您好!
"&vInput&".很高兴能认识您.",vbOKOnly,"打招呼"
EndSub
示例01-15:
设置页边距(CentimetersToPoints方法)
SubSetLeftMargin()
margin简写属性在一个声明中设置所有外边距属性
MsgBox"将工作表Sheet1的左页边距设为5厘米"
Worksheets("Sheet1").PageSetup.LeftMargin=Application.CentimetersToPoints(5)
EndSub
示例01-16:
使用Windows的计算器(ActivateMicrosoftApp方法)
SubCallCalculate()
Application.ActivateMicrosoftAppIndex:
=0
EndSub
示例说明:
运行本程序后,将调用Windows的计算器。
示例01-17:
在程序中运行另一个宏(Run方法)
SubrunOtherMacro()
MsgBox"本程序先选择A1至C6单元格区域后执行DrawLine宏"
ActiveSheet.Range("A2:
C6").Select
Application.Run"DrawLine"
EndSub
示例01-18:
在指定的时间执行宏(OnTime方法)
SubAfterTimetoRun()
MsgBox"从现在开始,10秒后执行程序「testFullScreen」"
Application.OnTimeNow+TimeValue("00:
00:
10"),"testFullScreen"
EndSub
示例说明:
运行本程序后,在10秒后将执行程序testFullScreen。
示例01-19:
暂时停止宏运行(Wait方法)
SubStop5sMacroRun()
DimSetTimeAsDate
MsgBox"按下「确定」,5秒后执行程序「testFullScreen」"
SetTime=DateAdd("s",5,Now())
Application.WaitSetTime
CalltestFullScreen
EndSub
示例说明:
运行本程序后,按下弹出的提示框中的“确定”按钮,等待5秒后执行另一程