[英]How to incorporate a with statement with an if statement?
我一直在編寫一個代碼,彈出一個消息框,您可以鍵入工作表的名稱,然后它將在所有其他具有該名稱的工作表的末尾創建一個新工作表。
在谷歌搜索的幫助下,我能夠編寫一個代碼,彈出一個輸入inputbox
,在其中輸入我想要為新工作表命名的名稱,並帶有with語句,它將在所有其他工作表的末尾創建該代碼。
我遇到的問題是if語句,它應該說,如果該名稱不存在,請繼續運行代碼,如果該名稱確實存在,請退出sub(不要繼續處理下面的代碼)。 我得到If Not xSht Is Nothing Then
的工作方式,就是將它編寫為If xSht Is Nothing Then
,但這會創建兩個if語句,因此第一部分將完全無效。 我也嘗試將其編寫為else語句,但是由於下面的with語句,它跳過了msgbox
並仍然創建了一個新表。
Dim ws As Worksheet
Dim xName As String
Dim xSht As Object
Set xSht = Sheets(xName)
xName = InputBox("Enter Sheet Name")
If xName = "" Then Exit Sub
If Not xSht Is Nothing Then
MsgBox ("Name already exists")
Exit Sub
End If
With ThisWorkbook 'Adds new sheet with the name it has been given
Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
ws.Name = xName
End With
<More code>
顛倒順序:
Set xSht = Sheets(xName)
和:
xName = InputBox("Enter Sheet Name")
(可能還有其他問題)
嘗試這個。 您可以在檢查工作表是否存在時關閉錯誤。 輸入名稱后定義變量,否則將出現另一個錯誤。
Sub x()
Dim ws As Worksheet
Dim xName As String
Dim xSht As worksheet
xName = InputBox("Enter Sheet Name")
If xName = "" Then Exit Sub
On Error Resume Next 'avoids error if sheet doesn't exist
Set xSht = Sheets(xName)
On Error GoTo 0 'turn off error avoidance
If Not xSht Is Nothing Then
MsgBox "Name already exists"
Exit Sub
End If
With ThisWorkbook
Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
ws.Name = xName
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.