Как правильно добавить «да / нет» в окно сообщения VBA с существующей строкой - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть макрос, который запускается на основе раскрывающегося списка.В раскрывающемся списке есть три варианта.Я создал специальное предупреждающее сообщение для каждой капли, которое работает хорошо.Я хотел добавить к этому коду выбор кнопок «ДА» и «НЕТ», но я не могу заставить его работать должным образом.

Кажется, я могу сделать только один или.Одно и то же предупреждающее сообщение для каждого выбора, но с «да» и «нет» или пользовательскими сообщениями для каждого выбора, но только с опцией «ОК», без выбора кнопок «ДА» и «НЕТ».

Sub CopyRanges()

Dim message As String

If Sheets("Data").Range("D27") = "6-18" Then
    message = "You are about to change the size range, are you sure?"
Msgbox message
End If

If Sheets("Data").Range("D27") = "XS/S-L/XL" Then
    message = "You are about to change the size range to DUAL size, some POM's will not be available using the DUAL size range. Are you sure you wish to proceed?"
Msgbox message
End If

If Sheets("Data").Range("D27") = "XXS-XXL" Then
    message = "This size range is only for Fully Fashionesd Knitwear. Cut and sew styles please use the size 6-18 size range. Are you sure you wish to proceed?"
Msgbox message
End If

1 Ответ

0 голосов
/ 14 февраля 2019

Вы можете добавить опции к вашему Msgbox (полный список предоставлен здесь ).

По приведенной выше ссылке полный синтаксис для Msgbox:

MsgBox ( prompt , [кнопки ,] [ title ,] [ helpfile , context ])


Вы хотите получить доступ кнопки вариант.На практике это выглядит примерно так:

Dim Ans 'Answer
Ans = Msgbox (message, vbYesNo)

If Ans = vbYes Then
    'Do what if yes
Else
    'Do what if no
End If

Кроме того, Select Case отлично работает здесь

Sub CopyRanges()

Dim message1 As String: message1 = "You are about to change the size range, are you sure?"
Dim message2 As String: message2 = "You are about to change the size range to DUAL size, some POM's will not be available using the DUAL size range. Are you sure you wish to proceed?"
Dim message3 As String: message3 = "This size range is only for Fully Fashionesd Knitwear. Cut and sew styles please use the size 6-18 size range. Are you sure you wish to proceed?"
Dim Ans as VbMsgBoxResult

Select Case Sheets("Data").Range("D27")
    Case "6-18"
        Ans = MsgBox(message1, vbYesNo)
            If Ans = vbYes Then
                'What if yes?
            Else
                'What if no?
            End If

    Case "XS/S-L/XL"
        Ans = MsgBox(message2, vbYesNo)
            If Ans = vbYes Then
                'What if yes?
            Else
                'What if no?
            End If

    Case "XXS-XXL"
        Ans = MsgBox(message3, vbYesNo)
            If Ans = vbYes Then
                'What if yes?
            Else
                'What if no?
            End If

End Select

End Sub

Наконец, если ваши 3 утверждения yes приводят к 3 неотъемлемо различным задачамВ завершение вы можете рассмотреть вопрос о создании 3 подводных лодок, которые выполняют различные задачи.Затем вы можете просто вызвать соответствующий саб в каждом случае.Он будет содержать этот код в чистоте, и я всегда призываю к разделению процедур, позволяющих использовать специальные макросы, а не универсальный подход

...