2016-09-28 6 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)を最後に最後には逃しました。 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 
関連する問題