[英]Check if sheet exists
我想檢查名為“test”的工作表是否存在,如果不存在,則創建該工作表並將其命名為“test”。
如果它存在,我運行一個單獨的代碼塊,我沒有在這里放。 我使用了錯誤處理,因為如果發生錯誤,它會忽略錯誤。
If Sheets("test").Name = "" Then
'MsgBox Sheets("test").Name & "Name"
.Worksheets.Add After:=ThisWorkbook.Worksheets("test2")
.ActiveSheet.Name = "test"
End If
無論我做什么,這部分代碼總是會運行並創建一個新工作表。
如果工作表“test”不存在,則代碼運行正常。 它創建一個新工作表並重命名它並繼續。 顯然,在另一種情況下它不會重命名工作表,因為已經有另一個同名的工作表“測試”。
如果您不太熟悉 VBA,則可以使用它而不是函數:
Sub checkSheet()
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "MySheet" Then
exists = True
End If
Next i
If Not exists Then
Worksheets.Add.Name = "MySheet"
End If
End Sub
不太確定為什么要添加額外的工作表,但我會使用外部函數來檢查工作表是否存在......
我還會為“test2”添加一些錯誤檢查,所以這里有一些您應該能夠適應的代碼
Sub Test()
Dim wsName As String: wsName = "test"
If Not WorkSheetExists(wsName) Then Worksheets.Add().Name = wsName
If WorkSheetExists("test2") Then Worksheets(wsName).Move _
After:=ThisWorkbook.Worksheets("test2")
End Sub
Function WorkSheetExists(ByVal strName As String) As Boolean
On Error Resume Next
WorkSheetExists = Not ActiveWorkbook.Worksheets(strName) Is Nothing
End Function
* 編輯 *
更新函數以指定應測試哪個工作簿
Function WorkSheetExists(ByVal SheetName As String, Optional ByRef WorkbookToTest As Workbook) As Boolean
On Error Resume Next
If WorkbookToTest Is Nothing Then Set WorkbookToTest = ThisWorkbook
WorkSheetExists = Not WorkbookToTest.Worksheets(SheetName) Is Nothing
End Function
實現此目的的一種稍微不同的方法是創建工作表名稱的字典。
然后就可以使用exists函數來測試sheet是否存在
Dim sheetNames As Object
Dim ws As Worksheet
' Create and populate dictionary
Set sheetNames = CreateObject("Scripting.Dictionary")
For Each ws In ThisWorkbook.Sheets
sheetNames.Add ws.Name, ws.Index
Next ws
' Test if sheet exists
If Not sheetNames.Exists("test") Then
' If not add to workbook
ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Worksheets("test2")).Name = "test"
' add sheet to dictionary
sheetNames.Add "test", ThisWorkbook.Worksheets("test").Index
End If
嘗試這個 :
Function IsExists(name As String, Optional wb As Workbook) As Boolean
Dim sheet As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(name)
On Error GoTo 0
IsExists = Not sheet Is Nothing
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.