如何将 with 语句与 if 语句合并?
How to incorporate a with statement with an if statement?
我一直在编写一个代码来弹出一个消息框,您可以在其中输入 sheet 的名称,然后它将在 sheet 的末尾创建一个新的 sheet所有其他同名的。
在谷歌搜索的帮助下,我能够编写一个弹出 inputbox
的代码,在其中我为新的 sheet 写了一个我想要的名称,并带有一个 with-statement,它在我所有其他 sheet 的末尾创建它。
我遇到的问题是 if 语句,它应该说如果这个名字不存在则继续 运行 代码,如果这个名字存在则退出子(不要继续处理下面的代码)。我通过将 If Not xSht Is Nothing Then
写成 If xSht Is Nothing Then
来让 If Not xSht Is Nothing Then
工作,但这会创建两个 if 语句,因此第一部分完全无效。我也尝试将它写成 else 语句,但随后它跳过了 msgbox
并且由于下面的 with 语句仍然创建了一个新的 sheet。
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")
(可能还有其他问题)
试试这个。您可以在检查 sheet 是否存在时关闭错误。输入名称后定义变量,否则会出现另一个错误。
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
我一直在编写一个代码来弹出一个消息框,您可以在其中输入 sheet 的名称,然后它将在 sheet 的末尾创建一个新的 sheet所有其他同名的。
在谷歌搜索的帮助下,我能够编写一个弹出 inputbox
的代码,在其中我为新的 sheet 写了一个我想要的名称,并带有一个 with-statement,它在我所有其他 sheet 的末尾创建它。
我遇到的问题是 if 语句,它应该说如果这个名字不存在则继续 运行 代码,如果这个名字存在则退出子(不要继续处理下面的代码)。我通过将 If Not xSht Is Nothing Then
写成 If xSht Is Nothing Then
来让 If Not xSht Is Nothing Then
工作,但这会创建两个 if 语句,因此第一部分完全无效。我也尝试将它写成 else 语句,但随后它跳过了 msgbox
并且由于下面的 with 语句仍然创建了一个新的 sheet。
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")
(可能还有其他问题)
试试这个。您可以在检查 sheet 是否存在时关闭错误。输入名称后定义变量,否则会出现另一个错误。
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