FileOpenDialog требует 2 щелчка «ОК», чтобы вернуть значение? - PullRequest
0 голосов
/ 03 ноября 2011

Я использую VBA для создания объекта FileOpenDialog, чтобы пользователь мог выбрать каталог. Вот мой тестовый код:

Function GetFolder(InitDir As String) As String
Dim fldr As FileDialog
Dim sItem As String
sItem = InitDir
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Please select a folder, then press OK to continue"
.AllowMultiSelect = False
If Right(sItem, 1) <> "\" Then
sItem = sItem & "\"
End If
.InitialFileName = sItem
If .Show = 0 Then
    GetFolder = ""
    Exit Function
End If
If .Show <> -1 Then
sItem = InitDir
Else
sItem = .SelectedItems(1)
End If
End With
GetFolder = sItem
Set fldr = Nothing
End Function

sub test()

dim selectedDir as variant

selectedDir=getFolder("c:")
msgbox selectedDir

end sub

Но диалоговое окно, созданное этой функцией, требует, чтобы пользователь дважды щелкнул ОК, чтобы выбрать папку, по которой он щелкнул. Есть ли способ сделать так, чтобы они нажимали ОК только один раз?

1 Ответ

4 голосов
/ 03 ноября 2011

Вы звоните .Show() дважды. Таким образом, диалог отображается дважды. Каждый раз нужно нажимать кнопку ОК только один раз.

Вызовите .Show только один раз и сохраните возвращенное значение в переменную для проверки позже.

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