首页 > 解决方案 > 显示 msgbox Excel VBA

问题描述

我完成我的项目的任务几乎完成了,我只是面临我的代码的最后一个问题。

Sub DeletePatientCheck()
'check if patient record exists before deleting'
Dim s As Worksheet
On Error Resume Next
'Check if Patient Record already exists'
For Each s In Sheets
    If s.Name = Selection Then
    Worksheets(s.Name).Activate
    Call DeleteRecord
End If
Next s
MsgBox "*No Patient Record Found!*"

End Sub

Sub DeleteRecord()
'Confirm delete?'
Answer = MsgBox("Are you sure you want to delete this Patient Record?", 
vbQuestion + vbYesNo, "Delete Patient Record")

If Answer = vbNo Then GoTo Skip
If Answer = vbYes Then
'It's benny, lets just double check'
Answer = MsgBox("Are you absolutely sure!", vbQuestion + vbYesNo, "Delete 
Patient Record - AYS")
If Answer = vbNo Then GoTo Skip
If Answer = vbYes Then
ActiveSheet.Delete
Sheets("Menu").Select
MsgBox "*Patient Record has been deleted - If done in error please use 
previous document version*"
End If
End If
Skip:
Sheets("Menu").Select
End Sub

基本上,当用户向 sub DeleteRecord() 下的 Answer msg 框提交“否”响应时,代码当前将其带回 sub deletepatientcheck 并转到 msg 框“No Patient Record found”。即使找到记录也会发生这种情况。

我想要做的是,如果没有给出响应,那么会弹出一个不同的消息框,上面写着“删除请求已取消”,而不是 MsgBox“未找到患者记录! ”。但无论 IF/then 功能或跳过:我使用它总是显示“未找到患者记录”消息框。任何人都可以帮忙吗?如果需要,很乐意进一步解释。提前致谢。

标签: vbaexcelloops

解决方案


这应该适合你。在 Boolean显示Exists您的MsgBox.

子 1:

Sub DeletePatientCheck()
'check if patient record exists before deleting'
Dim s As Worksheet
On Error Resume Next
'Check if Patient Record already exists'
Dim Exists As Boolean
For Each s In Sheets
    If s.Name = Selection Then
        Worksheets(s.Name).Activate
        Call DeleteRecord
        Exists = True
    End If
Next s

If Not Exists Then MsgBox "*No Patient Record Found!*"

End Sub

子 2:(建议)您可以vbNo通过仅对 进行编码vbYes并使用Else语句来解决vbNo.

另请注意,您可以GoTo Skip:通过立即调用任务然后使用Exit Sub. 此链接更详细地介绍了 Goto。

Sub DeleteRecord()
'Confirm delete?'
Dim Answer As String, Answer1 As String
Answer = MsgBox("Are you sure you want to delete this Patient Record?", vbQuestion + vbYesNo, "Delete Patient Record")

If Answer = vbYes Then
    Answer1 = MsgBox("Are you absolutely sure!", vbQuestion + vbYesNo, "Delete Patient Record - AYS")
        If Answer1 = vbYes Then
            ActiveSheet.Delete
            Sheets("Menu").Select
            MsgBox "*Patient Record has been deleted - If done in error please use previous document version*"
        Else
            MsgBox ("Delete Request Cancelled")
            Sheets("Menu").Select
            Exit Sub
        End If
Else
    MsgBox ("Delete Request Cancelled")
    Sheets("Menu").Select
    Exit Sub
End If

End Sub

推荐阅读