2011-11-02 79 views
0

我正在使用VBA创建一个FileOpenDialog对象,以便用户可以选择一个目录。这里是我的测试代码:FileOpenDialog需要2个“确定”点击才能返回值?

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 

但通过此函数创建的对话框要求用户单击确定两次选择,他们已经点击任何文件夹。有什么办法可以让它只需点击OK一次?

+0

它不需要我点击确定两次。你在哪个应用程序中托管? – Neil

回答

4

您拨打.Show()两次。所以对话显示两次。每次只需点击确定一次。

只需拨打.Show一次,并将返回的值保存到变量中以便稍后测试。

+0

解决了!谢谢。 – sigil

相关问题