Макрос все еще работает после (Msgbox vbyesno) If Then Else заявление - PullRequest
0 голосов
/ 25 ноября 2018

У меня проблема с оператором msgbox if / then / else, где я хотел иметь 3 варианта, во-первых, если в папке нет подпрограмм для информации (я это сделал), второй вариант, если есть некоторыеsub имеет опции Yes (для дальнейшего использования макроса) и No (просто для отмены действия).Но в моем случае и Да / Нет делают то же самое, Макрос делает свое действие ... Я пробовал много способов, но у меня нет вариантов и нервов ... (Я получил базовые знания по VBA, в основном используя Google издесь, так что я не очень опытный - так что адаптируйте свой язык программирования, чтобы лучше его понять).

Sub Schaltfläche1_Klicken()
    Dim FileSystem As Object
    Dim HostFolder As String

    ' *** Folder with systems to define (path) ***
    HostFolder = "C:\Users\MirzaV\Desktop\Original"

    ' *** If folder is empty/full message ***
    Dim fs, strFolderPath, oFolder
    Set fs = CreateObject("Scripting.FileSystemObject")
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    strFolderPath = "C:\Users\MirzaV\Desktop\Original" ' *** This is your folder to define ***

    Set oFolder = fs.GetFolder(strFolderPath)
    If (oFolder.SubFolders.Count = 0) Then
        ' * Folder is Empty *
        MsgBox "Folder is empty!", vbOKOnly + vbInformation, "Information!" 
    Else
        ' * Folder isn't empty *
        MsgBox "Folder not empty! Proceed with Macro?", vbYesNo + vbInformation + vbDefaultButton1, "Information!"
    End If

    Set fs = Nothing

    Set FileSystem = CreateObject("Scripting.FileSystemObject")
    DoFolder FileSystem.GetFolder(HostFolder)

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
End Sub

1 Ответ

0 голосов
/ 25 ноября 2018

Вы должны просто заменить эту строку:

MsgBox "Folder not empty! Proceed with Macro?", vbYesNo + vbInformation + vbDefaultButton1, "Information!"

... на эти две строки:

yourAnswer = MsgBox("Folder not empty! Proceed with Macro?", vbYesNo + vbInformation + vbDefaultButton1, "Information!")
If yourAnswer = vbNo Then Exit Sub

В первой строке хранится пользовательский ответ - возвращается как Integer отMsgBox в переменную yourAnswer.Вторая строка, If yourAnswer = vbNo, будет просто Exit Sub.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...