Отображает MSGbox Excel VBA - PullRequest
0 голосов
/ 12 июня 2018

Мой квест на завершение моего проекта почти завершен, я столкнулся с одной последней проблемой с моим кодом.

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

Обычно, когда пользователь отправляет ответ «нет» в поле сообщения «Ответ» в подпункте DeleteRecord (), код в настоящее время возвращает его в подпункт «deletepatientcheck» и переходит в поле сообщения «Не найдена запись пациента»."Это происходит, даже когда запись найдена.

Я пытаюсь сделать, если ответ не получен, а затем вызвать другое сообщение с сообщением «Удалить запрос отменен» вместо MsgBox » НетОбнаружена запись пациента!".Но независимо от того, какая функция IF / then или Skip: я использую ее, всегда отображается сообщение «Нет записи пациента».Кто-нибудь может помочь?с удовольствием объясню, если потребуется.Заранее спасибо.

1 Ответ

0 голосов
/ 12 июня 2018

Это должно работать для вас.Проверьте значение Boolean переменная Exists перед отображением вашего MsgBox.

Sub 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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...