2017-03-22 12 views
0

私は次のサブルーチンを持っています(モジュール10)。vba変数にサブルーチンを割り当てる

Sub varWorksheet(wksht As String) 
Dim ws As Worksheet 

Set ws = ThisWorkbook.Sheets(wksht) 

Set ws = Nothing 
End Sub 

私はこのようなもので、変数への参照として、このサブ・ルーチンを渡すのではなく、各ルーチンで明示的に宣言する必要ができるようにしたい:

Set ws = module10.varWorksheet("Sheet1") 

私は取得していますコンパイルエラー - >予想される関数または変数。

+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

関連する問題