Excel中各种VBA写法.docx

上传人:b****5 文档编号:14901542 上传时间:2023-06-28 格式:DOCX 页数:28 大小:25.50KB
下载 相关 举报
Excel中各种VBA写法.docx_第1页
第1页 / 共28页
Excel中各种VBA写法.docx_第2页
第2页 / 共28页
Excel中各种VBA写法.docx_第3页
第3页 / 共28页
Excel中各种VBA写法.docx_第4页
第4页 / 共28页
Excel中各种VBA写法.docx_第5页
第5页 / 共28页
Excel中各种VBA写法.docx_第6页
第6页 / 共28页
Excel中各种VBA写法.docx_第7页
第7页 / 共28页
Excel中各种VBA写法.docx_第8页
第8页 / 共28页
Excel中各种VBA写法.docx_第9页
第9页 / 共28页
Excel中各种VBA写法.docx_第10页
第10页 / 共28页
Excel中各种VBA写法.docx_第11页
第11页 / 共28页
Excel中各种VBA写法.docx_第12页
第12页 / 共28页
Excel中各种VBA写法.docx_第13页
第13页 / 共28页
Excel中各种VBA写法.docx_第14页
第14页 / 共28页
Excel中各种VBA写法.docx_第15页
第15页 / 共28页
Excel中各种VBA写法.docx_第16页
第16页 / 共28页
Excel中各种VBA写法.docx_第17页
第17页 / 共28页
Excel中各种VBA写法.docx_第18页
第18页 / 共28页
Excel中各种VBA写法.docx_第19页
第19页 / 共28页
Excel中各种VBA写法.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Excel中各种VBA写法.docx

《Excel中各种VBA写法.docx》由会员分享,可在线阅读,更多相关《Excel中各种VBA写法.docx(28页珍藏版)》请在冰点文库上搜索。

Excel中各种VBA写法.docx

Excel中各种VBA写法

Excel中各种VBA写法

工作簿对象事件一览表

当工作簿更改、工作簿中的任何工作表更改、加载宏更改或数据透视表更改时,将引发工作簿事件。

工作簿上的事件在默认情况下是可用的。

若要查看工作簿的事件过程,请用鼠标右键单击处于还原状态或最小化状态的工作簿窗口标题栏,再单击快捷菜单上的“查看代码”。

在“过程”下拉列表框选择事件名称。

事件说明

Activate激活工作薄时

AddinInstall当工作簿作为加载宏安装时

AddinUninstall工作簿作为加载宏卸载时

BeforeClose关闭工作薄前

BeforePrint打印工作薄(或其中任何容)之前

BeforeSave保存工作薄前

Deactivate工作簿从活动状态转为非活动状态时

NewSheet在工作簿中新建工作表时

Open打开工作簿时

PivotTableCloseConnection在数据透视表关闭与其数据源的连接之后

PivotTableOpenConnection在数据透视表打开与其数据源的连接之后

SheetActivate激活任何一表时

SheetBeforeDoubleClick双击任何工作表时

SheetBeforeRightClick鼠标右键单击任一工作表时

SheetCalculate工作表重新计算时

SheetChange更改工作表中的单元格时

SheetDeactivate任一工作表由活动状态转为非活动状态时

SheetFollowHyperlink单击MicrosoftExcel中的任意超时

SheetPivotTableUpdate数据透视表的工作表更新之后

SheetSelectionChange工作簿中的数据透视表更新之后

WindowActivate工作簿的窗口激活时

WindowDeactivate工作簿的窗口变为非活动状态时

WindowResize工作簿窗口调整大小时

 

工作表事件一览表

工作表上的事件在默认情况下是可用的。

若要查看工作表的事件过程,请用鼠标右键单击工作表标签,再单击快捷菜单上的“查看代码”。

在“过程”下拉列表框选择事件名称。

事件说明

Activate激活工作表时

Deactivate工作表从活动状态转为非活动状态时

BeforeDoubleClick双击工作表前

BeforeRightClick右键单击工作表时

Calculate对工作表进行重新计算之后

Change更改工作表中的单元格,或外部引起单元格时

FollowHyperlink单击工作表上的任意超时

PivotTableUpdate在工作簿中的数据透视表更新之后

SelectionChange工作表上的选定区域发生改变时

 

再贴一堆代码

例为设置密码窗口

(1)

IfApplication.InputBox("请输入密码:

")=1234Then

[A1]=1'密码正确时执行

Else:

MsgBox"密码错误,即将退出!

"'此行与第2行共同设置密码

EndIf

本示例为设置密码窗口

(1)

X=MsgBox("是否真的要结帐?

",vbYesNo)

IfX=vbYesThen

Close

本示例为设置工作表密码

ActiveSheet.ProtectPassword:

=641112'保护工作表并设置密码

ActiveSheet.UnprotectPassword:

=641112'撤消工作表保护并取消密码

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

ForEachwInWorkbooks

Ifw.NameThisWorkbook.NameThen

w.CloseSaveChanges:

=True

EndIf

Nextw

'每次打开工作簿时,本示例都最大化MicrosoftExcel窗口。

Application.WindowState=xlMaximized

'本示例显示活动工作表的名称。

MsgBox"Thenameoftheactivesheetis"&ActiveSheet.Name

'本示例保存当前活动工作簿的副本。

ActiveWorkbook.SaveCopyAs"C:

\TEMP\XXXX.XLS"

'下述过程激活工作簿中的第四工作表。

Sheets(4).Activate

 

'下述过程激活工作簿中的第1工作表。

Worksheets

(1).Activate

'本示例通过将Saved属性设为True来关闭包含本段代码的工作簿,并放弃对该

工作簿的任何更改。

ThisWorkbook.Saved=True

ThisWorkbook.Close

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

动进行重新计算。

Worksheets

(1).EnableCalculation=False

'下述过程打开C盘上名为MyFolder的文件夹中的MyBook.xls工作簿。

Workbooks.Open("C:

\MyFolder\MyBook.xls")

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

MsgBoxWorksheets("Sheet1").Range("A1").Value

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

ForEachwsInWorksheets

MsgBoxws.Name

Nextws

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

SetNewSheet=Worksheets.Add

NewSheet.Name="currentBudget"

本示例将新建的工作表移到工作簿的末尾

'PrivateSubWorkbook_NewSheet(ByValShAsObject)

Sh.MoveAfter:

=Sheets(Sheets.Count)

EndSub

本示例将新建工作表移到工作簿的末尾

'PrivateSubApp_WorkbookNewSheet(ByValWbAsWorkbook,_

ByValShAsObject)

Sh.MoveAfter:

=Wb.Sheets(Wb.Sheets.Count)

EndSub

本示例新建一工作表,然后在第一列中列出活动工作簿中的所有工作表的名称。

SetNewSheet=Sheets.Add(Type:

=xlWorksheet)

Fori=1ToSheets.Count

NewSheet.Cells(i,1).Value=Sheets(i).Name

Nexti

本示例将第十行移到窗口的最上面?

Worksheets("Sheet1").Activate

ActiveWindow.ScrollRow=10

当计算工作簿中的任何工作表时,本示例对第一工作表的A1:

A100区域进行排序

'PrivateSubWorkbook_SheetCalculate(ByValShAsObject)

WithWorksheets

(1)

.Range("a1:

a100").SortKey1:

=.Range("a1")

EndWith

EndSub

本示例显示工作表Sheet1的打印预览。

Worksheets("Sheet1").PrintPreview

本示例保存当前活动工作簿?

ActiveWorkbook.Save

本示例保存所有打开的工作簿,然后关闭MicrosoftExcel。

ForEachwInApplication.Workbooks

w.Save

Nextw

Application.Quit

下例在活动工作簿的第一工作表前面添加两新的工作表?

Worksheets.AddCount:

=2,Before:

=Sheets

(1)

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

Application.OnTimeNow+TimeValue("00:

00:

15"),"my_Procedure"

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

Application.OnTimeTimeValue("17:

00:

00"),"my_Procedure"

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

Application.OnTimeEarliestTime:

=TimeValue("17:

00:

00"),_

Procedure:

="my_Procedure",Schedule:

=False

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

'PrivateSubWorksheet_Calculate()

Columns("A:

F").AutoFit

EndSub

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

ActiveWorkbook.PrecisionAsDisplayed=True

本示例将工作表Sheet1上的A1:

G37区域剪下,并放入剪贴板。

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

G37").Cut

Calculate方法

计算所有打开的工作簿、工作簿中的一特定的工作表或者工作表中指定区域的单元

格,如下表所示:

'要计算'依照本示例

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

指定工作表'计算指定工作表Sheet1Worksheets

("Sheet1").Calculate

指定区域'Worksheets

(1).Rows

(2).Calculate

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

进行重新计算。

Worksheets

(1).EnableCalculation=False

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

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

C").Calculate

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

ActiveWorkbook.UpdateLinkName:

=ActiveWorkbook.LinkSources

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

Worksheets

(1).ScrollArea="a1:

f10"

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

SetNewBook=Workbooks.Add

Do

fName=Application.GetSaveAsFilename

LoopUntilfNameFalse

NewBook.SaveAsFilename:

=fName

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

Workbooks.Open"ANALYSIS.XLS"

ActiveWorkbook.RunAutoMacrosxlAutoOpen

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

WithActiveWorkbook

.RunAutoMacrosxlAutoClose

.Close

EndWith

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

'SubUseCanonical()

Displaythefullpathtouser.

MsgBoxActiveWorkbook.FullNameURLEncoded

EndSub

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

MsgBoxActiveWorkbook.FullName

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

Workbooks("BOOK1.XLS").CloseSaveChanges:

=False

本示例关闭所有打开的工作簿。

如果某个打开的工作簿有改变,MicrosoftExcel

将显示询问是否保存更改的对话框和相应提示。

Workbooks.Close

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

'PrivateSubWorkbook_BeforePrint(CancelAsBoolean)

ForEachwkInWorksheets

wk.Calculate

Next

EndSub

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

和。

Setc1=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

SolverOptionsPrecision:

=0.001

SolverOKSetCell:

=Range("TotalProfit"),_

MaxMinVal:

=1,_

ByChange:

=Range("C4:

E6")

SolverAddCellRef:

=Range("F4:

F6"),_

Relation:

=1,_

FormulaText:

=100

SolverAddCellRef:

=Range("C4:

E6"),_

Relation:

=3,_

FormulaText:

=0

SolverAddCellRef:

=Range("C4:

E6"),_

Relation:

=4

SolverSolveUserFinish:

=False

SolverSaveSaveArea:

=Range("A33")

本示例隐藏Chart1、Chart3和Chart5。

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

当激活工作表时,本示例对A1:

A10区域进行排序。

'PrivateSubWorksheet_Activate()

Range("a1:

a10").SortKey1:

=Range("a1"),order:

=xlAscending

EndSub

本示例更改MicrosoftExcel。

ActiveWorkbook.ChangeLink"c:

\excel\book1.xls",_

"c:

\excel\book2.xls",xlExcelLinks

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

ActiveSheet.EnableAutoFilter=True

ActiveSheet.Protectcontents:

=True,userInterfaceOnly:

=True

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

ActiveWorkbook.ChangeFileAccessMode:

=xlReadOnly

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

ActiveWorkbook.AutoUpdateFrequency=3

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

'SubClearSheet()

Worksheets("Sheet1").Cells.ClearContents

EndSub

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

Application.DisplayScrollBars=False

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

密选项。

'SubSetPasswordOptions()

WithActiveWorkbook

If.PasswordEncryptionProvider"MicrosoftRSASChannel

CryptographicProvider"Then

.SetPasswordEncryptionOptions_

PasswordEncryptionProvider:

="MicrosoftRSASChannel

CryptographicProvider",_

PasswordEncryptionAlgorithm:

="RC4",_

PasswordEncryptionKeyLength:

=56,_

PasswordEncryptionFileProperties:

=True

EndIf

EndWith

EndSub

在本示例中,如果活动工作簿不能进行写保护,那么MicrosoftExcel设置字符串

密码以作为活动工作簿的写密码。

'SubUseWritePassword()

DimstrPasswordAsString

strPassword="secret"

'Setpasswordtoastringifallowed.

IfActiveWorkbook.WriteReserved=FalseThen

ActiveWorkbook.WritePassword=strPassword

EndIf

EndSub

在本示例中,MicrosoftExcel打开名为Password.xls的工作簿,设置它的密码

,然后关闭该工作簿。

本示例假定名为Password.xls的文件位于C:

\驱动器上。

'SubUsePassword()

DimwkbOneAsWorkbook

SetwkbOne=Application.Workbooks.Open("C:

\Password.xls")

wkbOne.Password="secret"

wkbOne.Close

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

EndSub

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

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

ActiveWindow.DisplayFormulas=True

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

ActiveWorkbook.AcceptAllChanges

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

SubUseCanonical()

MsgBox'消息框

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

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

EndSub

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

MsgBoxApplication.StartupPath

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

ForEachwsInWorksheets

MsgBoxws.Name

Nextws

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

 

ForEachwInWorkbooks

Ifw.NameThisWorkbook.NameThen

w.Closesavechanges:

=True

EndIf

Nextw

Activate事件

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

当激活工作表时,本示例对A1:

A10区域进行排序。

PrivateSubWorksheet_Activate()

Range("a1:

a10").SortKey1:

=Range("a1"),order:

=xlAscending

EndSub

Calculate事件

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

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

PrivateSubWorksheet_Calculate()

Columns("A:

F").AutoFit

EndSub

BeforeDoubleClick事件

应用于Worksheet对象的Activate方法。

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

PrivateSubexpression_BeforeDoubleClick(ByValTargetAsRange,Cancel

AsBoolean)

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

Target必需。

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

Cancel可选。

当事件发生时为False。

如果事件过程将该参数设为True,则该

过程执行完之后将不进行默认的双击操作。

BeforeRightClick事件

应用于Worksheet对象的Activate方法。

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

PrivateSubexpression_BeforeRightClick(ByValTargetAsRange,Cancel

AsBoolean)

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

Target必需。

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

Cancel可选。

当事件发生时为False。

如果该事件过程将本参数设为True,则

该过程执行结束之后不进行默认的右键单击操作。

Change事件

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

PrivateSubWorksheet_Change(ByValTargetAsRange)

Target更改的区域。

可以是多个单元格。

说明

重新计算引起的单元格更改不触发本事件。

可使用Calculate事件俘获工作表重新

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2