簡體   English   中英

如何將with語句與if語句合並?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM