2016-09-28 2 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 
관련 문제