2016-09-28 305 views
2

基本上我有一個電子表格,其上有一個表單。在該表單上有一個文本框,其中包含可以從工作表上的單元格預先填充的文件路徑。但用戶可以選擇瀏覽另一個文件。當他們瀏覽時,他們可以選擇「打開」或「取消」。打開按鈕工作正常,並填充文本框,但如果他們選擇取消,它會清除文本框,如果它已經填充。我怎樣才能停止被清除的文本框?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

回答

0

這樣做的伎倆:

在那裏發生的事情我已經把範圍縮小到這個代碼塊。確保文件名具有填充文本框

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 
相關問題