2016-06-22 25 views
0

今日、特定のVBAコード行に問題がありました。私はこのExcelのVBAオブジェクト変数がエラーに設定されていません91

Public Function CreateInterface(InterfaceWB As Workbook, SourceFilepath As String, SourceBookPass As String) As CInterface 
    Dim NewInterface As CInterface 
    Set NewInterface = New CInterface 

    NewInterface.InitiateProperties InterfaceWB:=InterfaceWB, SourceFilepath:=SourceFilepath, SourceBookPass:=SourceBookPass <------Error Here 
    Set CreateInterface = NewInterface 
End Function 

mFactory

として「設定されていません...オブジェクト変数」に関するエラーメッセージを取得して91

VBAエラーである次のコードは、エラーが発生する場所であるとモジュールフォルダにあり続けます

Public Interface As CInterface 

Private Sub Workbook_Open() 
    Dim InterfaceWB As Workbook 
    Dim SourceFilepath As String 
    Dim SourceBookPass As String 

    Set InterfaceWB = ThisWorkbook 
    'Change this variable if the location of the source workbook is changed 
    SourceFilepath = "C:\file.xlsx" 
    'Change this variable if the workbook password is changed 
    SourceBookPass = "password" 

    Set Interface = mFactory.CreateInterface(InterfaceWB, SourceFilepath, SourceBookPass) 
End Sub 

そしてmFactoryモジュールで呼び出さInitiatePropertiesメソッドは、クラスモジュールのCInterfaceで実装されています:メソッドははThisWorkbookから開いているブックで呼び出され

次のように
Sub InitiateProperties(InterfaceWB As Workbook, SourceFilepath As String, SourceBookPass As String) 
    pInterfaceWB = InterfaceWB 
    pSourceFilepath = SourceFilepath 
    pSourceBookPass = SourceBookPass 
End Sub 

マイVBAProjectの構造がされています。私は、公共の機能にプライベート引数を渡すに関するエラーを得ていたので、私がやった

VBAProject 
    Microsoft Excel Objects 
      Sheet1 
      ThisWorkbook 
    Modules 
      mFactory 
    Class Modules 
      CInterface 

ことの一つは、PublicNotCreatableにCInterfaceのインスタンス化を変更です。私はVBAプロジェクトでグローバルに使用するCInterfaceクラスのインスタンスを作成するために "コンストラクタ"を使用しようとしています。なぜオブジェクトがラインに設定されていないのですか?エラーが表示されます。

+0

'mFactory'がオブジェクトではありませんであるべき。あなたの試した 'Set Interface = CreateInterface(InterfaceWB、SourceFilepath、SourceBookPass)'がありますか? – PatricK

+0

'mFactory'は、同じVBAProject内のモジュールです。ここでは、モジュールへのメソッド呼び出しを行っています。申し訳ありませんが、私の専門用語がVBAに間違っている場合、私はこの言語にあまり慣れていません。 –

答えて

1

オブジェクト変数を設定または使用せずに、この場合はpInterfaceWBを使用または割り当てようとするとThsエラーが発生します。

Sub InitiateProperties(InterfaceWB As Workbook, SourceFilepath As String, SourceBookPass As String) 
    pInterfaceWB = InterfaceWB 

Set pInterfaceWB = InterfaceWB 
+1

ああ、そうだろう!私はかなり新しいVBAとセットステートメントは、私はいつも忘れているものです。ありがとうございました。 –

関連する問題