2012-12-09 2 views
0

나는 바보 같은 질문일지도 모르다 그래서 VBA에 아주 새롭다. 나는 나의 userform에 2 개의 단추가 있고 하나는 입력을 위해 파일을 찾는다. (이것은 내가하는 일을 단순화 한 것입니다.) 때마다 '아래 첨자가 범위를 벗어났습니다'오류가 발생하지만 그 이유를 모르겠습니다. 아무도 나를 도울 수 있습니까? 덕분에 엑셀 도움말에서 많은VBA 아래 첨자

Public file as Variant 

Private Sub cmdBrowse_Click() 
file = Application.GetOpenFilename 
If file = False Then 
    MsgBox "There is no file selected.", vbCritical, "Warning" 
End If 
End Sub 

Private Sub cmdInput_Click() 
Cells(2, 2).Value = Workbooks(file).Worksheets(1).Cells(2, 2).Value 
End Sub 
+2

- 실제 코드 ... –

+0

를 게시 그러나 문제는 같은 항상 "(그것은 내가 뭐하는 거지 단지 단순화이다).": 코드는 전체 경로에서 바로 파일의 이름을 추출한다 장소. 항상 "셀 (2, 2). 값 = 통합 문서 (파일). 워크 시트 (1). 셀 (2, 2). 값"은 오류를 발생시킵니다. 그리고 난 그냥 이유를 알아낼 수 없다 – user1888663

+2

당신은 디버거에서 단계를 밟을 수있다 ... 나는 그것이 '파일'이라고 의심된다. ​​ –

답변

0

는 - "표준 열기 대화 상자를 표시하고 실제로 파일을을 열지 않고 사용자 파일 이름을 가져옵니다." 통합 문서를 열어야합니다, 그래서 뭔가 같은 :

Private Sub cmdBrowse_Click() 
file = Application.GetOpenFilename 
If file = False Then 
    MsgBox "There is no file selected.", vbCritical, "Warning" 
    Exit Sub 
End If 
Workbooks.Open file 
End Sub 

편집 : Application.Workbooks 속성 GetOpenFileName에 의해 반환되는 전체 파일 경로를 고려하지 않습니다. 따라서 두 번째 하위에서는 전체 파일 경로가 필요하지 않습니다.

Private Sub cmdInput_Click() 
Dim FileName as string 

FileName = Mid(file,InStrRev(file,Application.PathSeparator)+1,99) 
Cells(2, 2).Value = Workbooks(FileName).Worksheets(1).Cells(2, 2).Value 
End Sub 
+0

고마워요,하지만 여전히 동일합니다 .. – user1888663

+0

편집 됨. 이것이 작동하지 않으면 스스로 디버깅을 해보십시오. 그래서 몇 가지 세부 사항을 알려줄 수 있습니다. –

+0

이 작품! 고마워요! 그러나 나는 네가 그곳에서 한 일을 정말로 이해하지 못한다. 단지 파일의 이름을 원하는 것이 맞습니까? 문자열 'file'에서 InStrRev (file, Application.PathSeparator) +1,99부터 작은 문자열 'filename'을 원합니다. InStrRev는 'file'의 오른쪽에서 시작하여 Application.PathSeperator의 위치를 ​​반환합니다. 하지만 왜 +1,99? – user1888663

관련 문제