Dim filenames As Variant
Dim fn As Variant
Dim filename As String
filenames = Application.GetOpenFilename("Excel(*.xls),*.xls", 0, "Open a file", Null, True)
For Each fn In filenames
    filename = CStr(fn)
    ...
Next如果在出现对话框的时候点取消就会出错,怎么解决阿,先谢谢了

解决方案 »

  1.   

    For Each fn In filenames
        if str(fn) & ""<>"" then
            filename = Str(fn)
        end if
        ...
    Next
      

  2.   

    For Each fn In filenames         ///在这就报错了,Type mismatch
        if str(fn) & ""<>"" then
            filename = Str(fn)
        end if
        ...
    Next
      

  3.   

    Dim filenames As Variant
    Dim fn As Variant
    Dim filename As String
    filenames = Application.GetOpenFilename("Excel(*.xls),*.xls", 0, "Open a file", Null, True)
    For Each fn In filenames
        filename = CStr(fn)
        MsgBox filename
    Next
    在Excel正常啊?
      

  4.   

    如果选了文件运行正常,如果没有选任何文件点的是取消,这时候filename  = "False",接下来就出错了
      

  5.   

    filenames = Application.GetOpenFilename("Excel(*.xls),*.xls", 0, "Open a file", Null, True)
    '判断在这里判断一下filename
    if trim(filename) & ""<>"" then 
        For Each fn In filenames
            filename = CStr(fn)
            ...
        Next
    end if
      

  6.   

    不好意思,写错了,点取消时,filnames = "False",filenames = Application.GetOpenFilename("Excel(*.xls),*.xls", 0, "Open a file", Null, True)
    '判断在这里判断一下filename
    if trim(filename) & ""<>"" then  //选中文件时,trim(filenames) 类型不匹配 
        For Each fn In filenames
            filename = CStr(fn)
            ...
        Next
    end if
      

  7.   

    有没有什么函数能判断变量的类型阿,比如这里判断filenames的类型