中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
VBA常用代碼解析(第九講)

正文開始前,先插播一條廣告:




044 禁用宏則關(guān)閉工作簿

通常情況下,當(dāng)應(yīng)用程序的宏安全性的安全級別設(shè)置為“中”時,打開包含Microsoft Excel 4.0版的宏的工作簿,如果用戶選擇“禁用宏”按鈕,則會顯示如圖2所示的警告消息框,當(dāng)用戶選擇“否”時,不能打開該工作簿;用戶選擇“是”時,打開該工作簿,但VBA宏被禁止,而MicrosoftExcel 4.0版的宏未被禁止。

我們可以利用禁用VBA宏不能禁止MicrosoftExcel 4.0版的宏這個特點(diǎn),使用Microsoft Excel 4.0版的宏來實(shí)現(xiàn)禁用宏則關(guān)閉工作簿的功能。

步驟1 新建或打開需要添加此項功能的工作簿文件。

步驟2 <Ctrl F11>組合鍵為工作簿添加一個宏表,添加的宏表名稱默認(rèn)為“Macro1”。

步驟3 在宏表“Macro1”的A1A7單元格中輸入下面的內(nèi)容。

禁用宏則關(guān)閉工作簿

=ERROR(FALSE)

=IF(ERROR.TYPE(RUN('TestMacro'))=4)

= ALERT('因禁用了宏功能,文件將被關(guān)閉!',3)

= FILE.CLOSE(FALSE)

=END.IF()

=RETURN()

代碼解析:

Microsoft Excel 4.0宏函數(shù)以等號(=)開始,其他不是由等號開始的內(nèi)容將被視作注釋。通常用作定義的宏名稱或者作為宏函數(shù)實(shí)現(xiàn)功能的注釋內(nèi)容設(shè)置為斜體字樣以示區(qū)別,如圖3中單元格A1所示。

2行代碼關(guān)閉錯誤檢查功能。如果關(guān)閉錯誤檢查,那么當(dāng)宏執(zhí)行遇到錯誤時,Microsoft Excel 將不予理會而繼續(xù)執(zhí)行。

3行到第6行代碼使用If函數(shù)與End.If函數(shù)構(gòu)成條件判斷語句。其中,第3行中的語句通過檢查宏函數(shù)RUN('TestMacro')的返回錯誤類型是否為4(禁用宏時的返回結(jié)果),判斷工作簿是否禁用了宏功能。如果第3行的結(jié)果為True,則執(zhí)行下面的語句。

在第4、5行代碼,插入幾個空格來表示相關(guān)代碼之間的層次結(jié)構(gòu)。第4行中的代碼顯示一個消息框。第5行中的代碼關(guān)閉當(dāng)前活動工作簿,設(shè)置參數(shù)值為Fasle表示關(guān)閉時工作簿時不保存對其所作的更改。

7行代碼終止當(dāng)前代碼的執(zhí)行。MicrosoftExcel 4.0宏要求每個宏必須使用RETURNHALT函數(shù)結(jié)束。

步驟4 為每個表添加工作表級別的名稱“Auto_Activate”,并將引用都指向宏表“Macro1”的A2單元格?!?/span>Auto_Activate”是一個自動宏,表被激活時自動執(zhí)行。

添加工作表級別的名稱的方法如下:選擇一張工作表,假設(shè)為表“Sheet1”,單擊菜單“插入”→“名稱”→“定義名稱”。在“定義名稱”對話框中添加名稱,輸入完成后單擊“確定”按鈕,完成一張工作表的“Auto_Activate”的定義。完成定義后的名稱將在“定義名稱”對話框中顯示,如圖5所示。依次為每個表添加“Auto_Activate”名稱。此外,使用VBA也可以實(shí)現(xiàn)同樣的操作,并且使用VBA的好處是能夠隱藏名稱,以避免名稱被刪除或修改。代碼如下:

Sub AddPrivateNames()

Dimsht As Object

ForEach sht In Sheets

ThisWorkbook.Names.Add sht.Name &'!Auto_Activate',_

'=Macro1!$A$2',False

Next

End Sub

步驟5 運(yùn)行下面的代碼,隱藏宏表工作表:

Sub HideMacroSheet()

ThisWorkbook.Excel4MacroSheets(1).Visible= xlSheetHidden

End Sub

步驟6 保存工作簿。

當(dāng)應(yīng)用程序的宏安全性的安全級設(shè)置為“中”時,如果用戶打開該工作簿文件并選擇“禁用宏”,將顯示如圖 2所示的警告消息框。當(dāng)用戶選擇“是”時,活動工作表上的自動宏“Auto_Activate”將被執(zhí)行,執(zhí)行結(jié)果顯示如圖6所示的消息框,當(dāng)用戶選擇“確定”按鈕后,將強(qiáng)制關(guān)閉該工作簿文件。

045 關(guān)閉工作簿不顯示保存對話框

當(dāng)用戶更改工作簿后,沒有進(jìn)行保存操作而直接關(guān)閉工作簿時,將顯示消息框,提示用戶是否保存對工作簿的更改,如果希望不顯示該消息框而直接關(guān)閉關(guān)閉工作簿,可以在關(guān)閉時進(jìn)行相應(yīng)的設(shè)置。

045-1 使用Close方法關(guān)閉工作簿

使用Close方法關(guān)閉工作簿的,可以在Close方法中指定相應(yīng)的參數(shù),如下面的代碼所示。

Sub wbClose_1()

ThisWorkbook.CloseSaveChanges:=False

End Sub

代碼解析:

wbClose_1過程使用Close方法關(guān)閉工作簿,并放棄所有對工作簿的更改。

應(yīng)用于Workbook對象的Close方法關(guān)閉對象,語法如下:

expression.Close(SaveChangesFilename,RouteWorkbook)

其中SaveChanges參數(shù)是可選的,如果工作簿沒有改變則忽略此參數(shù);如果工作簿發(fā)生了改變并且在另外的窗口中也打開了該工作簿,則仍然忽略此參數(shù);如果工作簿發(fā)生了改變并且沒有在另外的窗口中打開,則此參數(shù)將指定是否在工作簿中保存所發(fā)生的更改。如果希望在關(guān)閉工作簿時自動保存更改,將SaveChanges參數(shù)值設(shè)置為True即可。還可以在使用Close方法關(guān)閉工作簿時設(shè)置Workbook對象的Saved屬性,如下面的代碼所示。

Sub wbClose_2()

ThisWorkbook.Saved= True

ThisWorkbook.Close

End Sub

代碼解析:

wbClose_2過程使用Close方法關(guān)閉工作簿,并放棄所有對工作簿的更改。

Workbook對象的Saved屬性指示工作簿從上次保存至今是否發(fā)生過更改,如果工作簿進(jìn)行了更改,則該屬性值為False,否則為True。應(yīng)用程序在關(guān)閉工作簿之前判斷該屬性的值,如果其值為False,則顯示提示是否保存的消息框,詢問用戶是否保存對工作簿所做的更改。

2行代碼將該屬性的值設(shè)置為True,使Excel認(rèn)為已經(jīng)保存了對工作簿所作的更改(實(shí)際上沒有保存更改),從而不再顯示提示是否保存的消息框。

如果需要保存對工作簿所作的更改,那么應(yīng)該在Close方法之前使用Save方法保存工作簿,代碼如下:

Sub wbClose_3()

ThisWorkbook.Save

ThisWorkbook.Close

End Sub

代碼解析:

wbClose_3過程使用Save方法保存工作簿所做的更改,然后使用Close方法關(guān)閉工作簿。

045-2 單擊工作簿關(guān)閉按鈕關(guān)閉工作簿

如果是通過單擊工作簿的關(guān)閉按鈕等操作關(guān)閉工作簿的,則使用BeforeClose事件過程來控制,如下面的代碼所示。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Me.Saved= True

End Sub

代碼解析:

工作簿的Workbook_BeforeClose事件,將工作簿的Saved屬性設(shè)置為True,不保存更改而直接關(guān)閉工作簿,且不顯示提示保存的消息框。

如果希望保存對工作簿的更改,則在Workbook_BeforeClose事件中使用Save方法保存工作簿,如下面的代碼所示。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Me.Save

End Sub

▲046 禁用工作簿的關(guān)閉按鈕

一般情況下,用戶可以通過菜單“文件”→“關(guān)閉”、工作簿窗口右上角的“關(guān)閉窗口”按鈕或者任務(wù)欄中圖標(biāo)右鍵菜單中的“關(guān)閉”菜單項關(guān)閉工作簿。如果希望禁用上述關(guān)閉工作簿的功能,而只能通過代碼關(guān)閉工作簿,則可以在相應(yīng)的工作簿事件中實(shí)現(xiàn),如下面的代碼所示。

Dim BClose As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If BClose= False Then

Cancel = True

MsgBox '此功能已經(jīng)被禁止,請使用”“關(guān)閉”“按鈕關(guān)閉工作簿!'vbExclamation,'提示'

EndIf

End Sub

Public Sub CloseWorkbook()

BClose= True

Me.Close

End Sub

代碼解析:

1行代碼在模塊頂部聲明變量BCloseBoolean類型,默認(rèn)初始值為False。

2行到第7行代碼工作簿的BeforeClose事件過程,通過變量BClose的當(dāng)前值決定是否能夠關(guān)閉工作簿,只有當(dāng)BClose的值為True時,才允許關(guān)閉工作簿。如果變量BClose的值為False時將參數(shù)Cancel的值設(shè)置為True,以禁止關(guān)閉操作。

8行到第11行代碼CloseWorkbook過程,將變量BClose的當(dāng)前值設(shè)置為True后使用Close方法關(guān)閉工作簿。關(guān)于Close方法請參閱▲45-1。

在添加以上代碼后,用戶只能通過調(diào)用CloseWorkbook過程關(guān)閉工作簿。如果通過菜單“文件”→“關(guān)閉”或者單擊工作簿窗口右上角的“關(guān)閉窗口”按鈕關(guān)閉工作簿,將顯示消息框。

047 保存工作簿的方法

047-1 使用Save方法

使用Workbook對象的Save方法保存工作簿的更改,如下面的代碼所示。

Sub SaveWork()

ThisWorkbook.Save

End Sub

代碼解析:

SaveWork過程保存代碼所在的工作簿的修改。

Save方法保存指定工作簿所做的更改,語法如下:

expression.Save

參數(shù)expression是必需的,該表達(dá)式返回一個Workbook對象。

如果是第一次保存工作簿,請使用SaveAs方法為該文件指定文件名,請參閱▲47-2

047-2 直接保存為另一文件名

如果需要將工作簿另存為另一個文件名,可以使用Workbook對象的SaveAs方法,如下面的代碼所示。

Sub SaveAsWork()

ThisWorkbook.SaveAsFilename:=ThisWorkbook.Path & '\123.xls'

End Sub

代碼解析:

SaveAsWork過程將代碼所在的工作簿保存為“123工作簿文件。

Workbook對象的SaveAs方法使用另外一個不同的文件名保存對工作簿所做的更改,語法如下:

Save As(FileName,FileFormat,PasswordWriteResPassword,ReadOnlyRecommendedCreateBackup,AccessMode,ConflictResolution,AddToMruTextCodepage,TextVisualLayout,Local)

其中,參數(shù)Filename可選,表示要保存文件的文件名的字符串。可包含完整路徑,如果不指定路徑,將文件保存到當(dāng)前文件夾中。

使用SaveAs方法將工作簿另存為新文件后,將關(guān)閉原工作簿文件。

047-3 保存工作簿副本

如果用戶希望工作簿在保存為另一文件名后,能繼續(xù)編輯原工作簿,那么可以使用SaveCopyAs方法,如下面的代碼所示。

Sub SaveCopyWork()

ThisWorkbook.SaveCopyAsThisWorkbook.Path & '\123.xls'

End Sub

代碼解析:

SaveCopyWork過程使用SaveCopyAs方法保存代碼所在的工作簿副本,并指定其名稱。

SaveCopyAs方法將指定工作簿的副本保存到文件,但不修改內(nèi)存中的打開工作簿,語法如下:

SaveCopyAs(Filename)

參數(shù)Filename是必需的,用于指定工作簿副本的文件名。


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
超過指定日期打開工作簿則啟動自殺程序
EXCEL加載宏制作攻略
VBA實(shí)戰(zhàn)技巧32:安裝Excel加載宏
打開工作簿后只顯示用戶窗體的方法探討
Excel VBA實(shí)例教程 #040:工作簿的引用方法
VBA代碼窗口、模塊的簡單講解及ThisWorkbook工作簿代碼應(yīng)用
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服