我用commondialog打开文件,我事先写了一个缺省的文件名在文件名框里。现在,我怎么知道用户点击的是确定还是取消啊?没有返回值。谢谢!

解决方案 »

  1.   

    如果CancelError=True,用户按下取消键,将激发一个错误。你用On Error捕捉就可以了。
      

  2.   

    捕捉32755号错误:Option ExplicitPrivate Sub Command1_Click()
        On Error GoTo myerr
        Dim myfile As String
        Me.CommonDialog1.CancelError = True
        Me.CommonDialog1.Filter = "all file(*.*)|*.*"
        Me.CommonDialog1.ShowOpen
        If Me.CommonDialog1.FileName = "" Then Exit Sub
        myfile = Me.CommonDialog1.FileName
        MsgBox "你选择了确定,并且选择了文件: " & myfile
        Exit Sub
    myerr:
        Select Case Err.Number
        Case 32755
             MsgBox "你选择了取消"
        End Select
    End Sub
      

  3.   


    CancelError 属性
          返回或设置一个值,该值指示当选取“取消”按钮时是否出错。语法object.CancelError [= boolean]CancelError 属性语法有下列部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    boolean 布尔表达式,如“设置值”中所描述,用以指示是否出错。 
    设置值用于 boolean 的设置有:设置值 描述 
    True 有错。 
    False (缺省值)没错。 
    说明当该属性设置为 True 时,无论何时选取“取消”按钮,均产生 32755 (cdlCancel) 号错误。数据类型Boolean
      

  4.   

    不知道为什么,我不是很喜欢用on error goto,我一般这样做:
    Option ExplicitPrivate Sub Command1_Click()
        On Error GoTo Next
        Dim myfile As String
        Me.CommonDialog1.CancelError = True
        Me.CommonDialog1.Filter = "all file(*.*)|*.*"
        Me.CommonDialog1.ShowOpen
        If Err.Number <> 0 Then
            If Me.CommonDialog1.FileName = "" Then Exit Sub
            myfile = Me.CommonDialog1.FileName
            MsgBox "你选择了确定,并且选择了文件: " & myfile
        Else
            MsgBox "你选择了取消"
        End If
    End Sub另外还一个方法,就是不用CommonDialog控件,而使用API中的GetOpenFileName、GetSaveFileName、PrintDlg等函数代替,API可是有返回值的,控制起来方便多了。
      

  5.   

    真不好意思,上面的If Err.Number <> 0 Then 应该是If Err.Number = 0 Then。
    不等于0是判断GetOpenFileName、GetSaveFileName、PrintDlg等函数的返回值的,呵呵。