vba - 显示 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 功能或跳过:我使用它总是显示“未找到患者记录”消息框。任何人都可以帮忙吗?如果需要,很乐意进一步解释。提前致谢。
解决方案
这应该适合你。在 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
推荐阅读
- python - 在 Python 中检测线的倾斜度
- c# - MailKit 无法解析主机名
- java - Java“填空”练习
- swift - CIImage 到 UIImage 扭曲颜色 SWIFT
- react-native - 需要帮助在 React 本机应用程序中实现类别
- kotlin - Gradle 和 Jackson 依赖
- javascript - 为什么 onclick 仅在第一次单击时起作用,然后停止工作?
- signalr - 如何在 AutoFac 中注册强类型 signalR Hub 以在 IHostedService 或 BackgroundService 中注入 IHubContext
- r - 如何在 Power BI 中使用 R 访问 Excel 工作簿的工作表?
- r - 如何在 pivot_wider 而不是列表中获取总值的总和?