Excel-常用宏技巧(2)

Excel-常用宏技巧(2) 

本示例设置 15 秒后运行 my_Procedure 过程,从现在开始计时。

Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"


本示例设置 my_Procedure 在下午 5 点开始运行。

Application.OnTime TimeValue("17:00:00"), "my_Procedure"


本示例撤消前一个示例对 OnTime 的设置。

Application.OnTime EarliestTime:=TimeValue("17:00:00"), _

Procedure:="my_Procedure", Schedule:=False


每当工作表重新计算时,本示例就调整 A 列到 F 列的宽度。

'Private Sub Worksheet_Calculate()

Columns("A:F").AutoFit

End Sub


本示例使活动工作簿中的计算仅使用显示的数字精度。

ActiveWorkbook.PrecisionAsDisplayed = True


本示例将工作表 Sheet1 上的 A1:G37 区域剪下,并放入剪贴板。

Worksheets("Sheet1").Range("A1:G37").Cut


Calculate 方法

计算所有打开的工作簿、工作簿中的一张特定的工作表或者工作表中指定区域的单元格,如下表所示:

'要计算 '依照本示例

所有打开的工作簿 ' Application.Calculate (或只是 Calculate)

指定工作表 '计算指定工作表Sheet1 Worksheets("Sheet1").Calculate

指定区域 'Worksheets(1).Rows(2).Calculate


本示例对自动重新计算功能进行设置,使 Microsoft Excel 不对第一张工作表自动进行重新计算。

Worksheets(1).EnableCalculation = False


本示例计算 Sheet1 已用区域中 A 列、B 列和 C 列的公式。

Worksheets("Sheet1").UsedRange.Columns("A:C").Calculate


本示例更新当前活动工作簿中的所有链接?

ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources


本示例设置第一张工作表的滚动区域?

Worksheets(1).ScrollArea = "a1:f10"


本示例新建一个工作簿,提示用户输入文件名,然后保存该工作簿。

Set NewBook = Workbooks.Add

Do

fName = Application.GetSaveAsFilename

Loop Until fName <> False

NewBook.SaveAs Filename:=fName


本示例打开 Analysis.xls 工作簿,然后运行 Auto_Open 宏。

Workbooks.Open "ANALYSIS.XLS"

ActiveWorkbook.RunAutoMacros xlAutoOpen


本示例对活动工作簿运行 Auto_Close 宏,然后关闭该工作簿。

With ActiveWorkbook

.RunAutoMacros xlAutoClose

.Close

End With


在本示例中,Microsoft Excel 向用户显示活动工作簿的路径和文件名称。

'Sub UseCanonical()

Display the full path to user.

MsgBox ActiveWorkbook.FullNameURLEncoded

End Sub


本示例显示当前工作簿的路径及文件名(假定尚未保存此工作簿)。

MsgBox ActiveWorkbook.FullName


本示例关闭 Book1.xls,并放弃所有对此工作簿的更改。

Workbooks("BOOK1.XLS").Close SaveChanges:=False


本示例关闭所有打开的工作簿。如果某个打开的工作簿有改变,Microsoft Excel 将显示询问是否保存更改的对话框和相应提示。

Workbooks.Close


本示例在打印之前对当前活动工作簿的所有工作表重新计算?

'Private Sub Workbook_BeforePrint(Cancel As Boolean)

For Each wk In Worksheets

wk.Calculate

Next

End Sub


本示例对查询表一中的第一列数据进行汇总,并在数据区域下方显示第一列数据的总和。

Set c1 = Sheets("sheet1").QueryTables(1).ResultRange.Columns(1)

c1.Name = "Column1"

c1.End(xlDown).Offset(2, 0).Formula = "=sum(Column1)"


本示例取消活动工作簿中的所有更改?

ActiveWorkbook.RejectAllChanges


本示例在商业问题中使用规划求解函数,以使总利润达到最大值。SolverSave 函数将当前问题保存到活动工作表上的某一区域。

Worksheets("Sheet1").Activate

SolverReset

SolverOptions Precision:=0.001

SolverOK SetCell:=Range("TotalProfit"), _

MaxMinVal:=1, _

ByChange:=Range("C4:E6")

SolverAdd CellRef:=Range("F4:F6"), _

Relation:=1, _

FormulaText:=100

SolverAdd CellRef:=Range("C4:E6"), _

Relation:=3, _

FormulaText:=0

SolverAdd CellRef:=Range("C4:E6"), _

Relation:=4

SolverSolve UserFinish:=False

SolverSave SaveArea:=Range("A33")


本示例隐藏 Chart1、Chart3 和 Chart5。

Charts(Array("Chart1", "Chart3", "Chart5")).Visible = False


当激活工作表时,本示例对 A1:A10 区域进行排序。

'Private Sub Worksheet_Activate()

Range("a1:a10").Sort Key1:=Range("a1"), Order:=xlAscending

End Sub


本示例更改 Microsoft Excel 链接。

ActiveWorkbook.ChangeLink "c:/excel/book1.xls", _

"c:/excel/book2.xls", xlExcelLinks


本示例启用受保护的工作表上的自动筛选箭头?

ActiveSheet.EnableAutoFilter = True

ActiveSheet.Protect contents:=True, userInterfaceOnly:=True


本示例将活动工作簿设为只读?

ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly


本示例使共享工作簿每三分钟自动更新一次?

ActiveWorkbook.AutoUpdateFrequency = 3


下述 Sub 过程清除活动工作簿中 Sheet1 上的所有单元格的内容。

'Sub ClearSheet()

Worksheets("Sheet1").Cells.ClearContents

End Sub


本示例对所有工作簿都关闭滚动条?

Application.DisplayScrollBars = False


如果具有密码保护的工作簿的文件属性没有加密,则本示例设置指定工作簿的密码加密选项。

'Sub SetPasswordOptions()

With ActiveWorkbook

If .PasswordEncryptionProvider <> "Microsoft RSA SChannel Cryptographic Provider" Then

.SetPasswordEncryptionOptions _

PasswordEncryptionProvider:="Microsoft RSA SChannel Cryptographic Provider", _

PasswordEncryptionAlgorithm:="RC4", _

PasswordEncryptionKeyLength:=56, _

PasswordEncryptionFileProperties:=True

End If

End With

End Sub


在本示例中,如果活动工作簿不能进行写保护,那么 Microsoft Excel 设置字符串密码以作为活动工作簿的写密码。

'Sub UseWritePassword()

Dim strPassword As String

strPassword = "secret"

' Set password to a string if allowed.

If ActiveWorkbook.WriteReserved = False Then

ActiveWorkbook.WritePassword = strPassword

End If

End Sub


在本示例中,Microsoft Excel 打开名为 Password.xls 的工作簿,设置它的密码,然后关闭该工作簿。本示例假定名为 Password.xls 的文件位于 C:/ 驱动器上。

'Sub UsePassword()


Dim wkbOne As Workbook


Set wkbOne = Application.Workbooks.Open("C:/Password.xls")


wkbOne.Password = "secret"

wkbOne.Close

'注意 Password 属性可读并返回 “********”。

End Sub


本示例将 Book1.xls 的当前窗口更改为显示公式。

Workbooks("BOOK1.XLS").Worksheets("Sheet1").Activate

ActiveWindow.DisplayFormulas = True


'本示例接受活动工作簿中的所有更改?

ActiveWorkbook.AcceptAllChanges


本示例显示活动工作簿的路径和名称

Sub UseCanonical()

MsgBox '消息框

[b7] = ActiveWorkbook.FullName '当前工作簿

[b8] = ActiveWorkbook.FullNameURLEncoded '活动工作簿

End Sub


本示例显示 Microsoft Excel 启动文件夹的完整路径。

MsgBox Application.StartupPath


本示例显示活动工作簿中每个工作表的名称。

For Each ws In Worksheets

MsgBox ws.Name

Next ws


本示例关闭除正在运行本示例的工作簿以外的其他所有工作簿,并保存其更改内容。

For Each w In Workbooks

If w.Name <> ThisWorkbook.Name Then

w.Close savechanges:=True

End If

Next w


Activate 事件

激活一个工作簿、工作表、图表或嵌入图表时产生此事件。

当激活工作表时,本示例对 A1:A10 区域进行排序。

Private Sub Worksheet_Activate()

Range("a1:a10").Sort Key1:=Range("a1"), Order:=xlAscending

End Sub


Calculate 事件

对于 Worksheet 对象,在对工作表进行重新计算之后产生此事件

每当工作表重新计算时,本示例就调整 A 列到 F 列的宽度。

Private Sub Worksheet_Calculate()

Columns("A:F").AutoFit

End Sub


BeforeDoubleClick 事件

应用于 Worksheet 对象的 Activate 方法。

当双击某工作表时产生此事件,此事件先于默认的双击操作。

Private Sub expression_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

expression 引用在类模块中带有事件声明的 Worksheet 类型对象的变量。

Target 必需。双击发生时最靠近鼠标指针的单元格。

Cancel 可选。当事件发生时为 False。如果事件过程将该参数设为 True,则该过程执行完之后将不进行默认的双击操作。


BeforeRightClick 事件

应用于 Worksheet 对象的 Activate 方法。

当用鼠标右键单击某工作表时产生此事件,此事件先于默认的右键单击操作。

Private Sub expression_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

expression 引用在类模块中带有事件声明的 Worksheet 类型对象的变量。

Target 必需。右键单击发生时最靠近鼠标指针的单元格。

Cancel 可选。当事件发生时为 False。如果该事件过程将本参数设为 True,则该过程执行结束之后不进行默认的右键单击操作。


Change 事件

当用户更改工作表中的单元格,或外部链接引起单元格的更改时产生此事件。

Private Sub Worksheet_Change(ByVal Target As Range)

Target 更改的区域。可以是多个单元格。

说明

重新计算引起的单元格更改不触发本事件。可使用 Calculate 事件俘获工作表重新计算操作。

本示例将更改的单元格的颜色设为蓝色。

Private Sub Worksheet_Change(ByVal Target as Range)

Target.Font.ColorIndex = 5

End Sub


Deactivate 事件

图表、工作表或工作簿从活动状态转为非活动状态时产生此事件。

Private Sub object_Deactivate()

object Chart、Workbook 或者 Worksheet。有关对 Chart 对象使用事件的详细信息,请参阅 Chart 对象事件的用法。

本示例当工作簿转为非活动状态时,对所有打开的窗口进行排列。

Private Sub Workbook_Deactivate()

Application.Windows.Arrange xlArrangeStyleTiled

End Sub


FollowHyperlink 事件

当单击工作表上的任意超链接时,发生此事件。对于应用程序级或工作簿级的事件,请参阅 SheetFollowHyperlink 事件。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Target Hyperlink 类型,必需。一个代表超链接目标位置的 Hyperlink 对象。

本示例对在当前活动工作簿中访问过的所有链接保留一个列表或历史记录。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

With UserForm1

.ListBox1.AddItem Target.Address

.Show

End With

End Sub


PivotTableUpdate 事件

发生在工作簿中的数据透视表更新之后。

Private Sub expression_PivotTableUpdate(ByVal Target As PivotTable)

expression 引用在类模块中带有事件声明的 Worksheet 类型对象的变量。

Target 必需。选定的数据透视表。

本示例显示一则消息,说明数据透视表已经更新。本示例假定您已在类模块中声明了带有事件的 Worksheet 类型的对象。

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

MsgBox "The PivotTable connection has been updated."

End Sub


SelectionChange 事件

当工作表上的选定区域发生改变时,将产生本事件。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Target 新选定的区域。

本示例滚动工作簿窗口,直至选定区域位于窗口的左上角。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveWindow

.ScrollRow = Target.Row

.ScrollColumn = Target.Column

End With

End Sub


本示例显示活动工作簿中工作表 sheet1 上单元格 A1 中的值。

MsgBox Worksheets("Sheet1").Range("A1").Value


本示例显示活动工作簿中每个工作表的名称。

For Each ws In Worksheets

MsgBox ws.Name

Next ws


本示例向活动工作簿添加新工作表,并设置该工作表的名称。

Set newSheet = Worksheets.Add

newSheet.Name = "current Budget"


本示例关闭工作簿 Book1.xls,但不提示用户保存所作更改。Book1.xls 中的所有更改都不会保存。

Application.DisplayAlerts = False

Workbooks("BOOK1.XLS").Close

Application.DisplayAlerts = True


本示例设置保存文件时显示提示,要求用户输入汇总信息。

Application.PromptForSummaryInfo = True


本示例显示 Microsoft Excel 的完整路径。

Private Sub aa()

MsgBox "The path is " & Application.Path

End Sub


示例显示每一个可用加载宏的路径及文件名。

For Each a In AddIns

MsgBox a.FullName

Next a


ChDir 语句

改变当前的目录或文件夹。

ChDir path

在 Power Macintosh 中,默认驱动器总是改为在 path 语句中指定的驱动器。完整路径指定由卷标名开始,相对路径由冒号 (:) 开始. ChDir 可以辨认路径中指定的别名:

ChDir "MacDrive:Tmp" ' 在 Macintosh 中


本示例显示当前路径分隔符。

MsgBox "The path separator character is " & _

Application.PathSeparator


Move 方法

将一个指定的文件或文件夹从一个地方移动到另一个地方。

语法

object.Move destination

Move 方法语法有如下几部分:

部分 描述

object 必需的。始终是一个 File 或 Folder 对象的名字。

destination 必需的。文件或文件夹要移动到的目标。不允许有通配符。


CreateFolder 方法

创建一个文件夹。

语法

object.CreateFolder(foldername)

reateFolder 方法有如下几部分:

部分 描述

object 必需的。始终是一个 FileSystemObject 的名字。

foldername 必需的。字符串表达式,它标识创建的文件夹。


本示例使用 MkDir 语句来创建目录或文件夹。如果没有指定驱动器,新目录或文件夹将会建在当前驱动器中。

MkDir "MYDIR" ' 建立新的目录或文件夹。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值