1.,常用的、带解释的VBA短句by:yuhongpu=2&ID=169024&page=1&px=0VBA起步]常用的、带解释的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'返回活动单元格的工作簿名如下代码可使工作簿打开后30秒(或闲置30秒)内不输入、不重新选择等,自动关闭工作簿PrivateSubWorkbook_Open()'工作簿打开事件tt'工作簿打开时启动tt过程EndSubPrivateSubWorkbook_SheetChange(ByValShAsObject,ByValTargetAsRange)'工作表变化事件tt'工作表中任一单元格有变化时启动tt过程EndSubPrivateSubWorkbook_SheetSelectionChange(ByValShAsObject,ByValTargetAsRange)'工作表选择变化事件tt'工作表中单元格的选择有变化时启动tt过程EndSubSubtt()'tt过程DimmyNowAsDate,BLAsInteger'定义myNow为日期型;定义BL为长整型myNow=Now'把当前的时间赋给变量myNowDo'开始循环语句DoBL=Second(Now)-Second(myNow)'循环中不断检查变量BL的值IfBL=30ThenGoToCl'当BL=30即跳转到CLDoEvents'转让控制权,以便sheets可继续操作LoopUntilBL30'当BL30即跳出循环ExitSubCl:Application.EnableEvents=False'避免引起其他事件ActiveWorkbook.CloseTrue'关闭活动工作簿并保存Application.EnableEvents=True'可触发其他事件EndSubrange(e4).addcomment.Text代头&Chr(10)&内容……'添加批注range(e4).Comment.Visible=True'显示批注把工作簿中所有工作表的指定列调整为最佳列宽:Sub调整列宽()Dimi%Fori=1ToSheets.Count'遍历工作簿中所有的工作表Sheets(i).Columns(A:K).AutoFit'把每个工作表的[A:K]列调整为最佳列宽NextiEndSubDo循环语句的几种形式:1.DoWhilei1'条件为True时执行......'要执行的语句Loop2.DoUntili1'条件为False时执行......'要执行的语句Loop3.Do......'要执行的语句LoopWhilei1'条件为True时执行4.Do......'要执行的语句LoopUntili1'条件为False时执行5.While...Wend语句Whilei1'条件为True时执行......'要执行的语句Wend勾选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'判断工作表是否处于保护状态工作表的复制与命名Subwshzw()DimiAsIntegerFori=1To5Sheets(Sheet1).CopyAfter:=Sheets(1)'Before/After复制新表在Sheets(Sheet1)前/后ActiveSheet.Name=i&月'为复制的新表命名NextiSheets(Sheet1).Name=总表'为Sheets(Sheet1)改名EndSubApplication.EnableEvents=False......Application.EnableEvents=True'抑制事件连锁执行Application.EnableEvents=FalseActiveWorkbook.Save'抑制BeforeSave事件的发生Application.EnableEvents=True'抑制指定事件Application.DisplayAlerts=False'屏蔽确认提示Application.ScreenUpdating=False.......Application.ScreenUpdating=true'冻结屏幕以加快程序运行ActiveCell.CurrentRegion.Select'选择与活动单元格相连的区域range(a2:a20).NumberFormatLocal=00-00'区域的格式化ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row'已用区域的最末行ActiveSheet.CopyBefore:=Sheets(1)'复制活动工作表到第一张工作表之前range(a2:a20).FormulaHidden=True'工作表处于保护状态时隐藏部分单元格公式FileDateTime(E:\MyDocuments\33.xls)或FileDateTime(thisworkbook.FullName)'文件被创建或最后修改后的日期和时间FileLen(thisworkbook.FullName)/1024或FileLen(E:\MyDocuments\temp\33.xls)/1024'文件的长度(大小),单位是KBApplication.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'最大化窗口Sub删除工作表()Application.DisplayAlerts=FalseSheet1.DeleteApplication.DisplayAlerts=TrueEndSub有删除就有添加Sub添加工作表()Fori=1To5Worksheets.Add.Name=iNextEndSub[A1:A20].AdvancedFilterxlFilterCopy,[B1],Unique:=True'可去掉重复数据[A2:C32].ReplaceWhat:=F,Replacement:=G'指定范围内的查找与替换Activesheet.AutoFilterMode=false'取消自动筛选执行以下语句可有效缩小工作簿的大小,执行前请先看清每条语句的作用:ActiveSheet.UsedRange.Comment.Shape.TextFrame.AutoSize=True‘根据批注内容自动调整大小ActiveSheet.UsedRange.ClearComments'清除活动工作表已使用范围所有批注ActiveSheet.UsedRange.ClearFormats'清除活动工作表已使用范围所有格式ActiveSheet.UsedRange.Validation.Delete'取消活动工作表已使用范围的数据有效性ActiveSheet.Hyperlinks.Delete'删除活动工作表超链接ActiveSheet.DrawingObjects.Delete'删除活动工作表已使用范围的所有对象ActiveSheet.UsedRange=ActiveSheet.UsedRange.Value'取消活动工作表已使用范围的公式并保留值还有:Subx()DimmyRangeAsStringmyRange=ActiveSheet.UsedRange.Address'去除活动工作表无数据的行列EndSubActiveWorkbook.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'返回当前工作薄的路径dimmm(2,10)Range(a1:b10)=mm'可以将二维数组赋值给RangeApplication.Dialogs(XLdialogsaveas).show显示保存对话框[SIZE=1]Subx()DimmyRangeAsStringmyRange=ActiveSheet.UsedRange.Address'去除活动工作表无数据的行列EndSub这相当于把新的已使用区域赋值给变量,效果等同于手工删除多