VBA Excel选择文件 - 单击取消时清除文本框

问题描述:

基本上我有一个电子表格,其上有一个表单。在该表单上有一个文本框,其中包含可以从工作表上的单元格预先填充的文件路径。但用户可以选择浏览另一个文件。当他们浏览时,他们可以选择“打开”或“取消”。打开按钮工作正常,并填充文本框,但如果他们选择取消,它会清除文本框,如果它已经填充。我怎样才能停止被清除的文本框?VBA Excel选择文件 - 单击取消时清除文本框

Function GetFileName() 

    Set MyFile = Application.FileDialog(msoFileDialogOpen) 

    With MyFile 
     .Title = "Choose File" 
     .AllowMultiSelect = False 

     If .Show <> -1 Then 
      Exit Function 
     End If 
     GetFileName = .SelectedItems(1) 
    End With 

End Function 
+0

假设文字框的值被命名为'TextBox1',你能在'TextBox1_Change()'并处理它相应的检查呢? – jsheeran

+0

你已经缩小了太多。显示的代码既不会填充也不会清除文本框。它调用一个文件对话框,然后对所选文件执行任何操作。无论是否选择文件或单击取消,它都只是结束而不返回任何内容。 –

+1

@AxelRichter我错过了GetFileName = .SelectedItems(1)就在End With之上。我知道它现在出错了,因为GetFileName被设置为“”,然后在我的文本框中填充。我现在在填充文本框之前对它进行测试。感谢您回复,但家伙! – Cornflake2068

这样做的伎俩:

在那里发生的事情我已经把范围缩小到这个代码块。确保文件名具有填充文本框

Private Sub btnBrowse_Click() 

    Dim sFileName As String 

    sFileName = GetFileName() 

    If Len(sFileName) > 0 Then 
     TextBox1.Value = sFileName 
    End If 

End Sub 

Function GetFileName() 

    Set MyFile = Application.FileDialog(msoFileDialogOpen) 

    With MyFile 
     .Title = "Choose File" 
     .AllowMultiSelect = False 

     If .Show <> -1 Then 
      Exit Function 
     End If 
     GetFileName = .SelectedItems(1) 
    End With 

End Function