【发布时间】:2020-01-06 14:52:45
【问题描述】:
如果工作簿中的工作表与用户输入的值匹配,我将尝试删除它。如果该值不存在,则显示错误消息。有没有比我目前拥有的更好的方法来做到这一点?
最初,我尝试了一个带有多个 if 语句的嵌套 if 循环来获得我所取得的结果,但这没有奏效。下面的代码是我得到的,但它仍然有一些错误。例如,当满足第一个 FOR 条件时,两个 FOR 语句都会出现消息框(这是不正确的)。
Dim ws As Worksheet
Private Sub cmdDeleteProj_Click()
'
'Remove project sheet after project has been completed
'
'Show error message if user input field is blank
If txtRemProjNum.Value = "" Then
MsgBox "Input valid project number to continue.", vbExclamation, "Required Field Left Blank"
uf_RemProj.txtRemProjNum.SetFocus
End If
'Delete user defined project sheet if it exists
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
If ws.Name = txtRemProjNum Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
MsgBox "Project removed from inventory tracker."
End If
Next ws
'Show error message if project does not exist
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
If txtRemProjNum.Value <> "" And ws.Name <> txtRemProjNum Then
MsgBox "Project number not found." & vbNewLine & "" & vbNewLine & "Input valid project number.", vbCritical, "Out of Range"
uf_RemProj.txtRemProjNum.Text = ""
uf_RemProj.txtRemProjNum.SetFocus
End If
Next ws
End Sub
如果工作表存在,我希望将其删除,但无法使 if 语句和 FOR 循环工作。
【问题讨论】:
标签: excel vba for-loop nested-loops