今日、特定の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
として「設定されていません...オブジェクト変数」に関するエラーメッセージを取得して91VBAエラーである次のコードは、エラーが発生する場所であるとモジュールフォルダにあり続けます
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クラスのインスタンスを作成するために "コンストラクタ"を使用しようとしています。なぜオブジェクトがラインに設定されていないのですか?エラーが表示されます。
'mFactory'がオブジェクトではありませんであるべき。あなたの試した 'Set Interface = CreateInterface(InterfaceWB、SourceFilepath、SourceBookPass)'がありますか? – PatricK
'mFactory'は、同じVBAProject内のモジュールです。ここでは、モジュールへのメソッド呼び出しを行っています。申し訳ありませんが、私の専門用語がVBAに間違っている場合、私はこの言語にあまり慣れていません。 –