2014-12-17 2 views
1

내가 내 문제의 해결은 매우 간단하다고 생각 작동하지 않습니다 ...하지만 내가 잘못하고있는 중이 야 모르겠어요 .. :/와 워크 시트를 반환하는 것은

감사를 도와!

Function getWorksheet(SheetNumber As Integer) As Worksheet 

    Dim workbook As workbook 
    Dim file As Variant 

    file = ShowFileDialogAndFindFile 

    Set workbook = Workbooks.Open(file, True, True) 

    getWorksheet = workbook.Worksheets(SheetNumber) 

End Function 

Function ShowFileDialogAndFindFile() As Variant 

    Dim fd As FileDialog 

    Set fd = Application.FileDialog(msoFileDialogFilePicker) 

    Dim vrtSelectedItem As Variant 

    With fd 

     If .Show = -1 Then 

      For Each vrtSelectedItem In .SelectedItems 

       ShowFileDialog = vrtSelectedItem 

      Next vrtSelectedItem 
     Else 
     End If 
    End With 
    Set fd = Nothing 

End Function 

내가 다른 MODUL에서 호출하고 있습니다 : 당신은이 작업을 수행하는 키워드 Set를 사용할 필요가

Dim sheetExtern As Worksheet 
sheetExtern = getWorksheet(1) 

답변

0

내 오류가 수 (1004)이있다. 기본적으로 :

를 작동 할 수 없습니다 :

Dim sheetExtern As Worksheet 
sheetExtern = getWorksheet(1) 

작동합니다 (함수의 나머지 부분을 가정하는 것은 괜찮습니다) :

같은 문자열, 정수 등의 기본 유형 (대한 외에도
Dim sheetExter As Worksheet 
Set sheetExtern = getWorksheet(1) 

, Double) VBA에서 개체를 설정하려면 먼저 Set 키워드를 사용해야합니다.

OK : a = 2 (원시 형의 정수) OK : a = New Collection (컬렉션을 설정해야합니다, 즉 Set a = New Collection) : KO가 a = "hello" (기본 String 형) .

가치가있는 답변 here 및 배경 질문 here

관련 문제