tft每日頭條

 > 職場

 > excelvba怎麼删除重複的區域

excelvba怎麼删除重複的區域

職場 更新时间:2024-10-01 19:17:54

在工作表事件中是沒有工作表删除事件的,為了防止用戶誤删除重要的工作表,除了使用保護工作簿方法外,還可以使用下面的代碼。

#001 Public Ctl As CommandBarControl

#002 Sub DelSht()

#003 Set Ctl = Application.CommandBars.FindControl(ID:=847)

#004 Ctl.OnAction = "MyDelSht"

#005 End Sub

#006 Sub ResSht()

#007 Set Ctl = Application.CommandBars.FindControl(ID:=847)

#008 Ctl.OnAction = ""

#009 End Sub

#010 Sub MyDelSht()

#011 If VBA.UCase$(ActiveSheet.CodeName) = "SHEET2" Then

#012 MsgBox "禁止删除" & ActiveSheet.Name & "工作表!"

#013 Else

#014 ActiveSheet.Delete

#015 End If

#016 End Sub

代碼解析:

DelSht過程将工作表标簽右鍵菜單中的“删除工作表”菜單的OnAction屬性設置為“MyDelSht”。

第3行代碼使用Set語句将工作表标簽右鍵菜單中的“删除工作表”菜單賦給變量Ctl,并将其OnAction屬性設置為MyDelSht過程,該菜單被單擊時将運行“MyDelSht”過程而不是系統默認的設置。OnAction屬性返回或設置一個VBA的過程名,該過程在用戶單擊或更改某命令欄控件的值時運行。

ResSht過程将工作表标簽右鍵菜單中的“删除工作表”菜單的OnAction屬性恢複為默認設置。

MyDelSht過程判斷所要删除的工作表的代碼名稱是否是“SHEET2”,如果是則禁止删除該表而隻顯示一個提示消息框。

為了不影響其他工作簿的使用,在VBE中雙擊ThisWorkbook寫入下面的代碼。

#001 Private Sub Workbook_Activate()

#002 Call DelSht

#003 End Sub

#004 Private Sub Workbook_Deactivate()

#005 Call ResSht

#006 End Sub

代碼解析:

工作簿的Activate事件和Deactivate事件代碼,在工作簿激活時運行DelSht過程,在關閉或打開其他工作簿時運行ResSht過程,這樣隻禁止删除本工作簿中“SHEET2”工作表,并不影響其他工作簿。

當删除本工作簿中的“SHEET2”工作表時,并不會顯示如圖 26‑1所示的消息框,而隻會顯示如圖 26‑2所示的禁止删除工作表的消息框。

excelvba怎麼删除重複的區域(ExcelVBA常見技巧22-禁止删除指定工作表)1

圖 26‑1 删除工作表提示

excelvba怎麼删除重複的區域(ExcelVBA常見技巧22-禁止删除指定工作表)2

圖 26‑2 禁止删除工作表

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关職場资讯推荐

热门職場资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved