您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > VBA在Excel中的应用(1)(2)(3)
在Excel中的应用(一)目录ActiveCellActiveWorkbookAdvancedFilterAutoFillActiveCell1.检查活动单元格是否存在SubactiveCell()IfActiveCellIsNothingThenEndIfEndSub2.通过指定偏移量设置活动单元格Suboffset()ActiveCell.Offset(RowOffset:=-2,ColumnOffset:=4).ActivateEndSubOffset函数的第一个参数为Row的偏移量,第二个参数为Column的偏移量(可以不指定),使用时可以直接给定值,如Offset(2,4)。值小于0向相反方向偏移。Offset().Activate与Offset().Select在效果上等同。3.设置活动单元格的当前值SubSetValueActiveCell.Value=HelloWorld!EndSub4.为当前活动单元格设置公式Subfomula()ActiveCell.Formula==SUM($G$12:$G$22)EndSub将公式的表达式直接赋值给Formula属性,公式表达式可以参考Excel中的公式菜单,如求和、计数、求平均值等。5.获取当前活动单元格的地址SubselectRange()MsgBoxActiveCell.AddressEndSub地址的格式如:$A$11。6.获取从当前活动单元格开始到边界单元格的区域'从当前单元格到最顶端SubSelectUp()Range(ActiveCell,ActiveCell.End(xlUp)).SelectEndSub'从当前单元格到最底端SubSelectDown()Range(ActiveCell,ActiveCell.End(xlDown)).SelectEndSub'从当前单元格到最右端(等同于xlEnd)SubSelectToRight()Range(ActiveCell,ActiveCell.End(xlToRight)).SelectEndSub'从当前单元格到最左端SubSelectToLeft()Range(ActiveCell,ActiveCell.End(xlToLeft)).SelectEndSub7.当前活动单元格所在区域选择SubSelectCurrentRegion()ActiveCell.CurrentRegion.SelectEndSub对CurrentRegion属性所代表的区域的说明:CurrentRegion返回活动单元格所在的周围由空行和空列组成的单元格区域(这个似乎有点不太好理解),可以看下图的示例:可以这样理解CurrentRegion属性所代表的区域,即以活动单元格为中心,它所包含的矩形区域的每一行和每一列中至少包含有一个数据,上图中的蓝色阴影区域中,无论活动单元格是哪一个,其所在的当前区域均为同一区域,如B5:D7区域中的B5和C6单元格。A4的当前区域表示为A1:D7,A8的当前区域表示为A5:D11,A12的当前区域只有它本身。使用CurrentRegion属性相当于在Excel工作表中选择菜单“编辑-定位”命令,在弹出的“定位”对话框中单击“定位条件”按钮,然后在“定位条件”对话框中选中“当前区域”选项按钮,或者相当于使用Ctrl+Shift+*组合键。在Excel2007中,该命令在以下地方可以找到:在下拉菜单中选择“GoToSpecial…”,在对话框中选择“Currentregion”。有关使用CurrentRegion的一些例子:在下图中,要使用空白单元格上方的有数据的单元格中的数据来填充空白单元格。代码如下,SubFillBlankCells()Worksheets(sheet1).Range(A1).CurrentRegion.SpecialCells(xlCellTypeBlanks).FormulaR1C1==R[-1]CWorksheets(sheet1).Range(A1).CurrentRegion.Value=Worksheets(sheet1).Range(A1).CurrentRegion.ValueEndSub执行之后,工作表中单元格A1所在当前区域中的空白单元格被相应数据填充,如下图。如下图,对第三列进行降序排序。代码如下:SubtestSort()DimrngAsRangeSetrng=Worksheets(sheet1).Cells(1,1).CurrentRegionrng.SortKey1:=rng.Cells(1,3),Order1:=xlDescending,Header:=xlYesEndSub执行之后,工作表中的数据将按照第三列的数据降序排序,如下图。8.使用SpecialCells方法该方法用于返回与指定形态和值相符合的所有单元格,其中第一个参数为xlCellType类型所代表的常数。xlCellTypeAllFormatConditions任何格式的单元格。xlCellTypeAllValidation带数据校验的单元格。xlCellTypeBlanks空单元格。xlCellTypeComments包含注释的单元格。xlCellTypeConstants包含常数的单元格。xlCellTypeFormulas包含公式的单元格。xlCellTypeLastCell已用范围的最后一个单元格。xlCellTypeSameFormatConditions有相同格式的单元格。xlCellTypeSameValidation有相同数据校验准则的单元格。xlCellTypeVisible所有可见单元格。第二个参数为可选参数。如果xlCellType为xlCellTypeConstants或xlCellTypeFormulas之一,该参数用于确定结果中应包含哪些类型的单元格。将某几个值相加可使此方法返回多种形态的单元格。默认情况下将指定所有常数或公式,对其形态则不加类型。它可以是下列常数之一。xlErrorsxlLogicalxlNumbersxlTextValuesSubSelectActiveArea()Range(Range(A1),ActiveCell.SpecialCells(xlTypeLastCell)).SelectEndSub有关使用SpecialCells的一个例子:将下图所示的数据按顺序存放到一个新建的工作表中,SubtoAcol()DimnewShtAsWorksheetDimRngAsRangeDimallDatAsRangeDimptAsRangeDimiAsLong'选择工作表中所有有内容的单元格SetallDat=ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)'新增工作表SetnewSht=Worksheets.Add'设置新工作表中的起始位置Setpt=newSht.Range(a1)ForEachRngInallDat.AreasFori=1ToRng.Cells.Countpt=Rng.Cells(i)Setpt=pt.Offset(1,0)NextNext'重命名新工作表newSht.Name=newSht&Worksheets.CountEndSub执行后,在名称为“newSht4”的工作表中会出现如下图所示的数据。9.通过Application.WorksheetFunction调用Proper方法SubFixText()ActiveCell.Value=Application.WorksheetFunction.Proper(asdf)EndSub该方法将给定的表达式中的第一个字母大写,而其余字母小写,示例中的代码将活动单元格的值设置为“Asdf”。10.EntireRow和EntireColumnSubSelectColumn()ActiveCell.EntireColumn.SelectEndSubSubSelectRow()ActiveCell.EntireRow.SelectEndSubEntireColumn用于选择当前活动单元格所在的整列,EntireRow用于选择当前活动单元格所在的整行。11.找出当前所选区域中包含最大值的单元格SubGoToMax()DimWorkRangeAsRangeIfTypeName(Selection)RangeThenExitSubIfSelection.Count=1ThenSetWorkRange=CellsElseSetWorkRange=SelectionEndIfMaxVal=Application.Max(WorkRange)OnErrorResumeNextWorkRange.Find(What:=MaxVal,_After:=WorkRange.Range(A1),_LookIn:=xlValues,_LookAt:=xlPart,_SearchOrder:=xlByRows,_SearchDirection:=xlNext,MatchCase:=False).SelectIfErr0ThenMsgBoxMaxvaluewasnotfound:&MaxValEndSub12.WarpText属性SubToggleWrapText()IfTypeName(Selection)=RangeThenSelection.WrapText=NotActiveCell.WrapTextEndIfEndSubWarpText属性用于指示当前活动单元格是否被设置为允许换行。ActiveWorkbook1.获取当前活动工作簿的名称Subtest()MsgBoxActiveWorkbook.FullNameEndSub2.打开工作表SubfilePath()DimfilePathAsStringfilePath=ActiveWorkbook.PathWorkbooks.Open(filePath&\&MyWorkbook.xls)EndSub3.保存工作表SubwebPage()ActiveWorkbook.SaveAs_Filename:=ActiveWorkbook.Path&\myXclfile.htm,_FileFormat:=xlHtmlEndSub4.预览工作表Subpre()ActiveWorkbook.WebPagePreviewEndSub5.发布Excel文件到指定的目录PublicSubSaveRangeWeb()ActiveWorkbook.PublishObjects.Add_SourceType:=xlSourceRange,_Filename:=ActiveWorkbook.Path&\Sample1.htm,_Sheet:=ActiveSheet.name,_Source:=$A$1:$B$11,_HtmlType:=xlHtmlStaticActiveWorkbook.PublishObjects(1).Publish(True)ActiveWorkbook.PublishObjects(1).AutoRepublish(False)EndSub上述代码可以将当前工作簿中所选择的区域以htm文件的格式发布到一个指定的目录中,该目录可以是本地目录,也可以是远程服务器上的目录,或者是Sharepoint中的一个特定的Folder。Publish方法的参数为True表示如果目标地址的文件存在则替换,为False表示如果目标地址的文件存在则追加。AutoRepublish方法的参数用于指示当Excel文件保存的时候是否自动重新发布。在Excel2007中,相当于点击窗体左上角的Office按钮,选择“发布”,点击“DocumentManagementServer”,在弹出的对话框
本文标题:VBA在Excel中的应用(1)(2)(3)
链接地址:https://www.777doc.com/doc-3184402 .html