首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消选项GetOpenFilename(Multiselect:= True)

取消选项GetOpenFilename(Multiselect:= True)
EN

Stack Overflow用户
提问于 2020-04-26 21:31:04
回答 1查看 198关注 0票数 0

我有以下问题:当我在GetFileOpenFileName选项中使用Multiselect = True时,如果我选择了一个或多个文件,它会将结果作为一个数组返回,但是如果我单击"Cancel“,它返回为一个布尔变量类型。我该怎么做才能避免

错误13“不兼容类型

当有人点击的时候。

此外,我已经尝试过测试if(vartype(filename) = vbBoolean) thenif(filename = False) then来退出sub,但是第一个错误和第二个错误一样,它说如果我选择某个文件,就不允许给filename赋值。

这是密码。

代码语言:javascript
复制
public sub open_file()
dim i as integer
Dim filename() As Variant

filename = Application.GetOpenFilename(Title:="Arquivos em Excel", MultiSelect:=True, FileFilter:="Arquivos em Excel,*.xls*")

For i = 1 To UBound(filename)

    msgbox filename(i)

next i

end sub
EN

回答 1

Stack Overflow用户

发布于 2020-04-27 00:17:57

根据来自@Brian斯塔福德和@braX的评论,您的代码应该修改如下.

代码语言:javascript
复制
Public Sub open_file()

    Dim i As Integer
    Dim filename As Variant

    filename = Application.GetOpenFilename(Title:="Arquivos em Excel", MultiSelect:=True, FileFilter:="Arquivos em Excel,*.xls*")

    If Not IsArray(filename) Then
        MsgBox "User cancelled!", vbExclamation 'optional
        Exit Sub
    End If

    For i = 1 To UBound(filename)
        MsgBox filename(i)
    Next i

End Sub

为了澄清,请注意,filename被声明为Variant,而不是作为一个数组,其元素是Variant数据类型。

因此,当选择一个或多个文件时,可以为filename分配一个包含文件名的数组,或者在用户取消时分配一个布尔值。

还要注意,我们测试filename是否是一个数组,以确定用户是否选择了一个或多个文件。如果没有,它就离开潜艇。否则,它将继续下去。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61448379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档