代码常用的VBA短句带注释.docx

上传人:b****6 文档编号:8529124 上传时间:2023-01-31 格式:DOCX 页数:16 大小:22.76KB
下载 相关 举报
代码常用的VBA短句带注释.docx_第1页
第1页 / 共16页
代码常用的VBA短句带注释.docx_第2页
第2页 / 共16页
代码常用的VBA短句带注释.docx_第3页
第3页 / 共16页
代码常用的VBA短句带注释.docx_第4页
第4页 / 共16页
代码常用的VBA短句带注释.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

代码常用的VBA短句带注释.docx

《代码常用的VBA短句带注释.docx》由会员分享,可在线阅读,更多相关《代码常用的VBA短句带注释.docx(16页珍藏版)》请在冰豆网上搜索。

代码常用的VBA短句带注释.docx

代码常用的VBA短句带注释

常用的VBA短句(带注释)

[A65536].End(xlUp).Row'A列末行向上第一个有值的行数

[A1].End(xlDown).Row'A列首行向下第一个有值之行数

[IV1].End(xlToLeft).Column'第一行末列向左第一列有数值之列数。

[A1].End(xlToRight).Column'第一行首列向右有连续值的末列之列数

Application.CommandBars("Standard").Controls

(2).BeginGroup=True'在常用工具栏的第二个按钮前插入分隔符

Cells.WrapText=False'取消自动换行

IfLen(Target)>5Then'如果当前单元格中的字符数超过5个,执行下一行

Target.WrapText=True'自动换行

EndIf

[A1:

B10].SpecialCells(xlCellTypeBlanks).Rows.Hidden=True'有空格即隐藏行

[A2].Parent.Name'返回活动单元格的工作表名

[A2].Parent.Parent.Name'返回活动单元格的工作簿名

勾选"VBA项目的信任"

Application.SendKeys"%(tmstv){ENTER}"'在Excel窗口操作

Application.SendKeys"%(qtmstv){ENTER}"'在VBE窗口操作

Application.CommandBars("命令按钮名称").Position=msoBarFloating'使[命令按钮]悬浮在表格中

Application.CommandBars("命令按钮名称").Position=msoBarTop'使[命令按钮]排列在工具栏中

ActiveSheet.ProtectPassword:

="wshzw"'为工作表保护加口令

ActiveSheet.UnprotectPassword:

="wshzw"'解除工作表保护

ActiveSheet.ProtectContents'判断工作表是否处于保护状态

Application.DisplayAlerts=False'屏蔽确认提示

ActiveCell.CurrentRegion.Select'选择与活动单元格相连的区域

Range("a2:

a20").NumberFormatLocal="00-00"'区域的格式化

ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row'已用区域的最末行

ActiveSheet.CopyBefore:

=Sheets

(1)'复制活动工作表到第一张工作表之前

Range("a2:

a20").FormulaHidden=True'工作表处于保护状态时隐藏部分单元格公式

Application.AskToUpdateLinks=False'不询问是否更新链接,并自动更新链接

ActiveSheet.Hyperlinks.Delete'删除活动工作表超链接

ActiveWorkbook.SaveLinkValues=False'不保存活动工作簿的外部链接值

ActiveSheet.PageSetup.CenterFooter=Range("k2").Value'打印时设置自定义页脚

ActiveSheet.PageSetup.Orientation=xlLandscape'设置为横向打印

ActiveSheet.PageSetup.Orientation=xlPortrait'设置为纵向打印

Application.WindowState=xlMinimized'最小化窗口

Application.WindowState=xlNormal'最大化窗口

ActiveWorkbook.FullName'当前窗口文件名与路径

Application.AltStartupPath="E:

\My\MyStart"'替补启动目录路径

Application.AutoRecover.Path'返回/设置Excel存储"自动恢复"临时文件的完整路径

Application.DefaultFilePath'选项>常规中的默认工作目录

Application.Evaluate("=INFO(""directory"")")'默认工作目录

Application.LibraryPath'返回库文件夹的路径

Application.NetworkTemplatesPath'返回保存模板的网络路径

Application.Path'返回应用程序完整路径

Application.RecentFiles.Item

(1).Path'返回最近使用的某个文件路径,Item

(1)=第一个文件

Application.StartupPath'Excel启动文件夹的路径

Application.TemplatesPath'返回模板所存储的本地路径

Application.UserLibraryPath'返回用户计算机上COM加载宏的安装路径

Debug.PrintApplication.PathSeparator'路径分隔符"\"

CurDir'默认工作目录

Excel.Parent.DefaultFilePath'默认工作目录

ThisWorkbook.Path'返回当前工作薄的路径

ActiveCell.Offset(,-1).Name="hzw"'定义名称

ActiveCell.Precedents.Address'被当前单元格所引用的区域地址

ActiveCell.Resize(0,2).Select'选定当前单元格并向右延伸二格

ActiveSheet.AutoFilter.Range.Columns

(1).SpecialCells(xlCellTypeVisible).Count-1'显示自动筛选后的行数

Workbooks.Close'关闭所有工作簿

Application.Quit'关闭所有工作簿

Application.ScreenUpdating=False

'......

Application.ScreenUpdating=True'冻结屏幕以加快程序运行

Application.EnableEvents=False

'......

Application.EnableEvents=True'抑制事件连锁执行

Application.EnableEvents=False

ActiveWorkbook.Save'抑制BeforeSave事件的发生

Application.EnableEvents=True'抑制指定事件

FileDateTime("E:

\MyDocuments\33.xls")

FileDateTime(ThisWorkbook.FullName)'文件被创建或最后修改后的日期和时间

FileLen(ThisWorkbook.FullName)/1024

FileLen("E:

\MyDocuments\temp\33.xls")/1024'文件的长度(大小),单位是KB

Dimmm(2,10)

Range("a1:

b10")=mm'可以将二维数组赋值给Range

Application.Dialogs(xlDialogSaveAs).Show'显示保存对话框

T=Application.GetOpenFilename("TextFiles(*.dat),*.dat")'选择文件打开路径

'如下代码可使工作簿打开后30秒(或闲置30秒)内不输入、不重新选择等,自动关闭工作簿

PrivateSubWorkbook_Open()'工作簿打开事件

tt'工作簿打开时启动tt过程

EndSub

PrivateSubWorkbook_SheetChange(ByValShAsObject,ByValTargetAsRange)'工作表变化事件

tt'工作表中任一单元格有变化时启动tt过程

EndSub

PrivateSubWorkbook_SheetSelectionChange(ByValShAsObject,ByValTargetAsRange)'工作表选择变化事件

tt'工作表中单元格的选择有变化时启动tt过程

EndSub

Subtt()'tt过程

DimmyNowAsDate,BLAsInteger'定义myNow为日期型;定义BL为长整型

myNow=Now'把当前的时间赋给变量myNow

Do'开始循环语句Do

BL=Second(Now)-Second(myNow)'循环中不断检查变量BL的值

IfBL=30ThenGoToCl'当BL=30即跳转到CL

DoEvents'转让控制权,以便sheets可继续操作

LoopUntilBL>30'当BL>30即跳出循环

ExitSub

Cl:

Application.EnableEvents=False'避免引起其他事件

ActiveWorkbook.CloseTrue'关闭活动工作簿并保存

Application.EnableEvents=True'可触发其他事件

EndSub

Range("e4").AddComment.Text"代头"&Chr(10)&"内容……"'添加批注

Range("e4").Comment.Visible=True'显示批注

把工作簿中所有工作表的指定列调整为最佳列宽:

Sub调整列宽()

Dimi%

Fori=1ToSheets.Count'遍历工作簿中所有的工作表

Sheets(i).Columns("A:

K").AutoFit'把每个工作表的[A:

K]列调整为最佳列宽

Nexti

EndSub

Do循环语句的几种形式:

'1.

DoWhilei>1'条件为True时执行

'......'要执行的语句

Loop

'2.

DoUntili>1'条件为False时执行

'......'要执行的语句

Loop

'3.

Do

'......'要执行的语句

LoopWhilei>1'条件为True时执行

'4.

Do

'......'要执行的语句

LoopUntili>1'条件为False时执行

'5.While...Wend语句

Whilei>1'条件为True时执行

'......'要执行的语句

Wend

工作表的复制与命名

Subwshzw()

DimiAsInteger

Fori=1To5

Sheets("Sheet1").CopyAfter:

=Sheets

(1)'Before/After复制新表在Sheets("Sheet1")前/后

ActiveSheet.Name=i&"月"'为复制的新表命名

Nexti

Sheets("Sheet1").Name="总表"'为Sheets("Sheet1")改名

EndSub

Sub删除工作表()

Application.DisplayAlerts=False

Sheet1.Delete

Application.DisplayAlerts=True

EndSub

Sub添加工作表()

Fori=1To5

Worksheets.Add.Name=i

Next

EndSub

[A1:

A20].AdvancedFilterxlFilterCopy,[B1],Unique:

=True'可去掉重复数据

[A2:

C32].ReplaceWhat:

="F",Replacement:

="G"'指定范围内的查找与替换

ActiveSheet.AutoFilterMode=False'取消自动筛选

'执行以下语句可有效缩小工作簿的大小,执行前请先看清每条语句的作用:

ActiveSheet.UsedRange.ClearComments'清除活动工作表已使用范围所有批注

ActiveSheet.UsedRange.ClearFormats'清除活动工作表已使用范围所有格式

ActiveSheet.UsedRange.Validation.Delete'取消活动工作表已使用范围的数据有效性

ActiveSheet.Hyperlinks.Delete'删除活动工作表超链接

ActiveSheet.DrawingObjects.Delete'删除活动工作表已使用范围的所有对象

ActiveSheet.UsedRange=ActiveSheet.UsedRange.Value'取消活动工作表已使用范围的公式并保留值

还有:

Subx()

DimmyRangeAsString

myRange=ActiveSheet.UsedRange.Address'去除活动工作表无数据的行列

EndSub

'这相当于把新的已使用区域赋值给变量,效果等同于手工删除多余的列或行后立即保存;

来一个函数的

PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)

'右边单元格反向显示活动单元格文本

IfActiveCell.Column<256ThenActiveCell.Offset(0,1)=StrReverse(ActiveCell)

EndSub

Subtest()

DimmyRangeAsString

myRange=ActiveSheet.UsedRange.Address

Debug.Print"LastRow="&Cells.SpecialCells(xlCellTypeLastCell).Row

Debug.Print"LastColumn="&Cells.SpecialCells(xlCellTypeLastCell).Column

myRange=""

EndSub

如上下相邻单元格数据相同则删除一个

SubYjue()

DimmyCellAsRange,NCellAsRange'定义

SetmyCell=ActiveSheet.Range("b2")'把对象ActiveSheet.Range("b2")赋给变量myCell

DoWhileNotIsEmpty(myCell)'条件为True时执行

SetNCell=myCell.Offset(1,0)'把对象myCell的下一个单元格赋给变量NCell

IfNCell.Value=myCell.ValueThen'如上下相邻单元格数据相同,则望下执行

myCell.Delete'删除myCell

EndIf'结束条件语句

SetmyCell=NCell'把变量NCell赋给变量myCell,等于在循环中把原myCell下移了一格

Loop

EndSub

复制行高列宽与内容:

SubYjue()'过程的名称

Sheet2.Rows("2:

23").Copy'复制行区域

Sheet3.Select'选择粘贴区域

Range("A2").PasteSpecialPaste:

=xlPasteColumnWidths'粘贴类型

ActiveSheet.Paste'实施粘贴

Application.CutCopyMode=False'取消复制模式

EndSub

如整行为空白则删除整行:

SubDelRow()

DimiAsInteger,LastRowAsInteger

LastRow=ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row'把最后行的行号赋给变量

Fori=LastRowTo1Step-1'倒循环

IfRange("iv"&i).End(xlToLeft).Column=1AndRange("a"&i)=""Then

Range("a"&i).EntireRow.Delete'如整行为空白则删除整行

EndIf

Nexti

EndSub

'通过依次赋色给单元格的例子,展示简单的OnErrorGoToLine1用法:

SubYjue()'过程名

DimiAsInteger'定义i为整型

OnErrorGoToLine1'遇到错误跳转到Line1

Fori=0To65'予设从0循环到65

Cells(i+1,2).Interior.ColorIndex=i'依次赋色给第2列的单元格

Cells(i+1,1)=i'依次给第1列的单元格标上色索引号

Nexti

ExitSub'退出过程

Line1:

'遇到错误跳转到这行继续执行

MsgBox"默认颜色只有"&i-1&"种。

"'提示对话框

EndSub'结束过程

'通过显示或取消网格线,展示运算符“Not”应用的简单示例:

DimmyLineAsBoolean'定义变量myLine为布尔型

WithCommandButton1'With语句结构

If.Caption="取消网格线"Then'如按钮上显示为"取消网格线"

.Caption="显示网格线"'改按钮上的字幕为"显示网格线"

myLine=ActiveWindow.DisplayGridlines'把活动窗口当前网格线的显示状态赋给变量

ActiveWindow.DisplayGridlines=NotmyLine'进行逻辑否定运算

Else

.Caption="取消网格线"'否则按钮上显示为"取消网格线"

ActiveWindow.DisplayGridlines=NotmyLine'进行逻辑否定运算

EndIf

EndWith'结束With语句结构

'有选择地删除指定区域内的单元格,点击按钮可选择性的删除[A1:

A20]区域内含有[D1]中字样的单元格;再点击按钮可返回原样;如果替换了[D1]中的字样,点击按钮后所删除[A1:

A20]区域中的单元格亦会随着变化。

WithCommandButton1

If.Caption="删除单元格"Then'如按钮显示的字符为:

"删除单元格",

.Caption="反悔删除"'则改为:

"反悔删除"

Fori=20To1Step-1'倒循环

IfCells(i,1)Like"*"&Range("d1")&"*"Then

Cells(i,1).DeleteShift:

=xlUp'如循环中发现某个单元格含有[D1]中字符,则删除该单元格

EndIf

Nexti

Else

.Caption="删除单元格"'否则让按钮显示的字符为:

"删除单元格"

Range("a1:

a20")=Range("f1:

f20").Value'把[F1:

F20]赋给[A1:

A20],为了可反复测试

EndIf

EndWith

'限制鼠标只能在[B2:

G60]以外的区域活动的例子:

WithActiveSheet'With语句,在一个单一对象上执行一系列的语句

.Unprotect'解除没设密码的工作表保护

.Cells.Locked=False'解除活动工作表中所有单元格的“锁定”

.Range("b2:

g60").Locked=True'只锁定[B2:

G60]区域

.EnableSelection=xlUnlockedCells'仅允许选定未被有效锁定的单元格

.Protect'工作表保护(没设密码)

EndWith'With语句结束

'一个复制数据后,只能粘贴数值的例子

PrivateSubWorksheet_SelectionChange(ByValTAsRange)'工作表SelectionChange事件

OnErrorResumeNext'忽略代码运行中的错误,并越过错误继续执行后面的语句

IfT.Column=1Then'如活动单元格为第一列时执行下面的语句

Selection.PasteSpecialPaste:

=xlPasteValues'粘贴数值

Application.CutCopyMode=False'立即清空剪贴板

EndIf'IF结构结束

EndSub'本过程结束

'如何用VBA获得工作簿名称?

ForEachwbkInWorkbooks

MsgBoxwbk.Name

Next

1.显示活动工作簿名称

MsgBox"当前活动工作簿是"&ActiveWorkbook.Name

2.保存活动工作簿

Activeworkbook.Save

3.保存所有打开的工作簿关闭EXCEL

ForEachWinApplication.Workbooks

W.Save

NextW

Application.Quit

4.将网格线设置为蓝色

ActiveWindow.GridlineColorIndex=5

5.将工作表sheet1隐藏

Sheet1.Visible=xlSheetVeryHidden

6.将工作表Shtte1显示

Sheet1.Visible=xlSheetVisible

7.单击某单元格,该单元格所在的行以蓝色背景填充,字体颜色为白色

PrivateSubWorksheet_SelectionChange(ByValTargetAsExcel.Range)

IfTarget.Row>=2Then’第二行以下的区域

OnErrorResumeNext

[ChangColor_With1].FormatConditions.Delete

Target.EntireRow.Name="ChangColor_With1"

With[ChangColor_With1].FormatConditions

.Delete

.AddxlExpression,,"TRUE"

.Item

(1).Interior.ColorIndex=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1