2017-03-22 4 views
0

다음 서브 루틴을 모듈 10에 가지고 있습니다. 내가 받고 있어요변수에 서브 루틴을 할당하는 VBA

Set ws = module10.varWorksheet("Sheet1") 

을 :

Sub varWorksheet(wksht As String) 
Dim ws As Worksheet 

Set ws = ThisWorkbook.Sheets(wksht) 

Set ws = Nothing 
End Sub 

나는 각 루틴에서 명시 적으로 선언해야보다는 이런 일이있는 변수에 대한 참조로이 서브 루틴을 통과 할 수 있도록하려면 컴파일 오류 -> expected Function 또는 Variable.

+0

VBA에는 기능/위임 유형이 없으며 할당이 아닌 호출이 될 수 있습니다. 아마도 클래스 내의 논리를 캡슐화하는 것을 고려해보십시오. http://www.cpearson.com/excel/classes.aspx –

답변

1

당신은 다음과 같은 기능을 사용합니다.

Function varWorksheet(wksht As String) As Worksheet 
    On Error Resume Next 
    Set varWorksheet = ThisWorkbook.Sheets(wksht) 
End Function 

워크 시트가 없으면 아무 것도 반환하지 않습니다. 이것은 잘 작동합니다.

Sub Test() 
    Dim ws As Worksheet 

    Set ws = Modul10.varWorksheet("Tabelle4") 
    If ws Is Nothing Then 
     Debug.Print "No worksheet" 
    Else 
     ' what ever you want 
    End If 
End Sub 
+0

나는 이것을 준비했다. 서브 시트를 워크 시트 객체를 반환하는 함수로 바꾸는 것은 올바른 일입니다 –

+0

대단히 감사합니다. – paynod