使用VBA代碼完成判斷工作表是否存在及刪除工作表的方法

2020-12-23 VBA語言專家

分享成果,隨喜真能量。大家好,今日內容仍是和大家分享VBA編程中常用的簡單「積木」過程代碼,這些內容大多是取至我編寫的「VBA代碼解決方案」教程中內容。NO.174-NO.175內容是:

NO. 174:如何利用VBA代碼,判斷是否為空表,如果為空表則使用Delete方法刪除

NO. 175:利用VBA的自定義函數,判斷工作表是否存在

VBA過程代碼174:如何利用VBA代碼,判斷是否為空表,如果為空表則使用Delete方法刪除

Sub mynz()

Dim Sh As Worksheet

Application.DisplayAlerts = False

i = 1

For Each Sh In ThisWorkbook.Sheets

If MyIsBlankSht(Sh) Then Sh.Delete: MsgBox "刪除" & i & "個工作表了": i = i + 1

Next

Application.DisplayAlerts = True

MsgBox "共刪除" & i - 1 & "個工作表!"

End Sub

代碼的解析說明:Mynz過程使用自定義的MyIsBlankSht函數刪除工作簿中所有空工作表。

代碼將Application對象的DisplayAlerts屬性設置為False,使刪除時不顯示系統警告對話框。

使用For Each……Next語句遍歷所有工作表,使用自定義的MyIsBlankSht函數判斷是否為空表,如果為空表則使用Delete方法刪除。

VBA過程代碼175:利用VBA的自定義函數,判斷工作表是否存在

Function MyExistSh(Sh As String) As Boolean

Dim Sht As Object

On Error Resume Next

Set Sht = Sheets(Sh)

If Err.Number = 0 Then MyExistSh = True

Set Sht = Nothing

End Function

代碼的解析說明:自定義MyExistSh函數包含一個String類型的參數,代表需要判斷的工作表名稱。如果該工作表存在,則返回True。代碼判斷前面的代碼是否出錯,如果前面的代碼存在錯誤,則表示不存在指定名稱的表。

VBA是實現自己小型辦公自動化的有效手段,我根據自己20多年的VBA實際利用經驗,現推出了四部VBA教程,這些是我多年編程經驗的記錄,也是我「積木編程」思想的體現。每一講都是較大塊的「積木」,可以獨立地完成某些或者某類的過程,有需要的朋友可以聯絡(WeChat:NZ9668)分享。利用這些可以提高自己的編程效率。其一:「VBA代碼解決方案」PDF教程,是VBA中各個知識點的講解,覆蓋了絕大多數的知識點,是初學及中級以下人員必備;其二「VBA資料庫解決方案」PDF教程,資料庫是數據處理的利器,對於中級人員應該掌握這個內容了。其三「VBA數組與字典解決方案」PDF教程,講解VBA的精華----字典,是我們打開思路,提高代碼水平的必備。其四「VBA代碼解決方案」視頻教程。目前正在錄製,「每天20分鐘,半年精進VBA」,越早參與,回饋越多。現在錄製到第三冊的99講。

相關焦點

  • VBA代碼判斷工作簿中是否存在指定工作表及用數組保存數據的方法...
    NO.176-NO.177內容是:NO. 176:使用自定義MyExistSh函數判斷工作簿中是否存在指定名稱的工作表NO. 177:使用Array函數創建一個數組用來保存數據並將其寫入到工作表的單元格區域VBA過程代碼176:使用自定義MyExistSh函數判斷工作簿中是否存在指定名稱的工作表Sub mynz()Dim Sh As
  • 神奇的Excel VBA系列之:如何判斷某工作表是否存在
    在前一篇文章中分享了製作工作表目錄的源碼過程。 其中有個判斷當前工作簿中是否存在指定名稱的工作表代碼片段。 本篇中將介紹幾種使用VBA代碼來判斷工作表是否存在的方法。有關Excel VBA編程,可參考使用《神奇的VBA》插件。
  • VBA代碼解決方案之二十五:EXCEL工作表的添加與刪除
    今日繼續講解VBA代碼解決方案的第二十五講:工作表如何添加和刪除。在VBA解決方案中,在工作簿中添加工作表使用Add方法,Add 方法應用於Sheets和Worksheets對象時新建工作表、圖表或宏表。
  • VBA代碼解決方案第58講:在VBA中查找指定工作表的實用方法
    大家好,我們今日繼續講解VBA代碼解決方案的第58講內容:在VBA中查找指定工作表的方法。在上一個例子中,我們通過一個自定義函數解決了刪除工作表的方法。其實實現目的的方法有很多種,不必要必須有某種辦法,但是寫程序的人,比如我,有著很大的惰性,或者說是偏愛某一種方法,比如,我特別喜歡用LEFT和RIGHT來進行左右的截取操作,雖然很多的時候用MID會更簡單些,唉,真的沒辦法。在完成某項目的也是如此,如果不是用自定義函數,只是用遍歷工作表的方法也可以實現的。今天的例子也是如此。
  • 運用Excel-vba合併工作表數據
    如下圖,工作簿中共有以下幾個工作表,現希望將各張工作表中的數據合併在一起。1.打開vba編輯器:右鍵單擊任意工作表,選擇「查看代碼」。'關閉屏幕刷新Application.DisplayAlerts = False '禁用警告提示Worksheets("匯總").Delete '刪除原匯總表Set ws = Worksheets.Add(before:=Sheets(1)) '新建工作表ws.Name = "匯總" '新建工作表命名為匯總For Each sh
  • 奇妙的VBA代碼之二十八:EXCEL中,如何批量刪除工作表中的空白行
    今日講解奇妙的VBA代碼之二十八:EXCEL中,如何批量刪除工作表中的空白行。要首先講解的是Range對象的Delete方法,此方法用於刪除對象。語法:expression.Delete(Shift)參數:a) expression是必需的,返回一個Range對象。b) Shift是可選的,指定刪除單元格時替補單元格的移位方式。
  • 工作表拆分,VBA用了30行,Python只有8行
    工作中,很多小夥伴都會遇到一些需求,將一份Excel文檔按照部門進行拆分,每個部門是一個單獨的工作表。讀者需要注意的是,多個工作表的拆分,始終在一個工作簿內操作。讓我們一起通過Python來實現。本例目標:根據指定的Excel文件按照部門拆分成多個工作表。最終效果:按照部門生成工作表。技術點:groupby()方法的使用,Excel的追加模式等。
  • 刪除空白工作表,手工黨?速度慢!刪除的不乾淨!我選擇VBA!
    前景提要工作中我們的報表經常會存在一些空白的工作表,比方說我們創建的一些輔助數據,或者從其他地方拷貝過來的一些輔助資料,既然都是輔助的,在完成了工作使命之後,最終的結果都會被刪除,但是通常情況下我們僅僅是刪除了數據內容,但是原來的的工作表中依然保留著一些原始的格式,公式甚至是一些圖片
  • Excel VBA 批量匯總多個工作表,您只需要在一瞬間完成
    今天主要和大家介紹的是,我們如何在Excel中使用vba代碼來完成多個工作表的匯總工作。在某些時候,我們經常需要處理如下圖的工作表數據匯總工作,將其他月份的數據統一匯總到同一個工作表中。大多數人都是用手動粘貼複製來完成這個重複性的工作,那麼在你學習了本篇,你就會用更高的效率去完成這個事情了。
  • VBA過程代碼之工作表操作
    VBA過程代碼12:保護工作表Sub MyNZ()ActiveSheet.ProtectEnd sub代碼的解析說明:上述代碼過程將保護當前的活動工作表。受到保護後此時工作表的很多功能,包括錄入數據,是不可以的,利用這個功能可以有效的完成對工作表的保護。
  • 如何批量刪除Excel工作表
    文/江覓如果一個工作薄中的工作表比較多,想要批量刪除工作表就顯得十分不方便,Excel vba是個特別好的工具,在此做了一個小工具,可以批量也可以選擇刪除工作表。示例通常刪除功能是一個比較具有破壞性,如果不小心刪除了重要文件,那就災難了,所以在使用Delete的時候要特別謹慎。按鈕說明此工作薄:批量刪除工作表工具工作薄,聽上去十分拗口,就是本工具的Excel工作表。打開工作薄:可以選擇想要刪除表的工作薄,這一點做得很自由,可以以窗口形式來選擇刪除工作薄。關閉工作薄:很顯然,就是把打開的工作薄關閉。
  • VBA代碼解決方案第49講:VBA代碼中工作表函數SUM的利用方法 - VBA...
    大家好,我們今日繼續講解VBA代碼解決方案的第49講內容(註:在整理之前的VBA系列文章中合併了一些文章,重新成集排序為第49講,所以從這篇文章開始以新的排序計算):VBA中SUM函數的利用方法。在對工作表的單元格區域進行求和計算時,使用工作表Sum函數比使用VBA代碼遍歷單元格進行累加求和效率要高得多,我們在熟悉了基本的代碼規則後,就要把重點放在優化程序上,這點非常重要,在一般的簡單運算中或許體會的不是很深,在資料庫的操作中這點非常的明顯。SUM函數就是優化程序的一個方法。我們看下面的代碼。
  • 利用VBA代碼,輕鬆完成向工作表中添加指定圖片到指定位置
    今日分享的是第NO.215-NO.215,內容是:NO. 215:Insert方法在工作表中插入圖片********************************************************************VBA過程代碼215:Insert方法在工作表中插入圖片Sub MynzinsertPic()Dim i As
  • 利用VBA,把工作表中提供的數據在資料庫表中逐一刪除
    大家好,我們今日繼續講解VBA資料庫解決方案的第24講內容:利用VBA,把工作表中提供的數據在數據表中刪除。在上一講中,我們講了利用rsADO.addnew 和 rsADO.Update 語句實現在數據表添加記錄的方法,今日我們講解,如何在記錄集中刪除記錄。也是在有重複記錄的數據表中刪除記錄的方法,如果有重複的數據將一併刪除。
  • Python和VBA巔峰對決-工作表的合併
    一起學習Python辦公自動化,教你快速學習Python的方法,可以站內私信我。一起加油!!!工作中,很多小夥伴都會遇到一些需求,將一份Excel文檔按照每個部門整理的工作表匯總為一份總的工作表。每個工作表格式都一樣,但是數量很多。傳統的方法就是手工打開文件,拷貝黏貼。費力耗時。
  • VBA拆分工作表
    當表格內容很多時,利用VBA是一種不錯的方法。 假設有如圖所示的數據,我們的任務是按照「地區」把原始數據拆分成一個工作表。我們該如何做呢?,我們第一個要關心的是加粗部分的代碼,這段代碼的作用是在計算機內存中創建一個「數據透視表數據加工區(Pivot Cache)」 這裡的ActiveWorkbook.PivotCaches的Create方法有多個參數,其中的SourceData:="表1"代表數據透視表的原始數據範圍,是一個表示數據範圍地址的字符串
  • 利用VBA代碼刪除空白行,如何刪除重複數據
    大家好,今日內容仍是和大家分享VBA編程中常用的簡單「積木」過程代碼,NO.136-NO.138,內容是:插入多行表格的方法、如何刪除工作表中的空白行、刪除重複數據行等內容。VBA過程代碼136:如何在工作表中一次插入多行表格的方法3Sub mynz()Sheets("22").Rows(3).Resize(3).InsertEnd Sub代碼的解析說明:上述過程使用Insert方法在第2行和第3行之間插入三行空行。
  • 聽說你會用VBA批量刪除工作表?但重要數據不是你想刪就能刪的
    前景提要昨天我們學習了一下批量刪除空白工作表的方法,那麼自然工作表的刪除就沒有任何的問題了,不過有時候當我們通過VBA批量刪除工作表數據的時候,可能會碰到一個問題,一時興起把一些主要的工作表數據刪除了,這就非常的尷尬了,我們都知道VBA操作的不可逆,所以我們在進行批量工作表刪除的時候
  • 利用工作表函數取代代碼,進一步優化VBA程序
    大家好,我們今日繼續講解VBA代碼解決方案的第86講內容:VBA代碼的優化篇,使用工作表函數要比代碼計算快很多。在代碼的優化的上一篇中我講到了關閉屏幕更新可以有效的節約程序的運行時間,那麼是不不是必須要關閉屏幕更新以得到更好的運行效率呢?根據我的經驗不是這樣的。
  • Excel小技巧:使用VBA,10秒鐘搞定拆分工作表(內附代碼)
    前面我們發布過將多個工作簿中的工作表合併到一個工作表簿中,就有網友提了一個問題,如何講一個工作表拆分成多個工作表,其實實現的方法很多,如果數據少的話,我們直接採用篩選後複製粘貼就可以了,如果數據比較多,或者是日常工作的話,每天這樣複製粘貼,就很麻煩~,或者我們使用透視表也可以。。