🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Q&A

解決済

1回答

1658閲覧

Excel VBA でコンパイルエラー

hankyo01

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

0グッド

0クリップ

投稿2019/09/25 21:42

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
Excel VBAで複数ファイルにまたがるsheetの表をマージさせようとしましたが、クラスモジュールで複数のworkbookを保持して標準モジュールで呼び出そうとした所、コンパイルエラーが発生します。

通常クラスモジュールはこのような使い方をしないのでしょうか?
よろしくお願いします。

発生している問題・エラーメッセージ

エラーメッセージ コンパイルエラー: メソッドまたはデータメンバーが見つかりません。

該当のソースコード

Excel VBA ソースコード '------------------------------------------------------------------------------------------ Public Sub set_zero() Debug.Print "start" Dim item As path_and_worksheetname Set item = New path_and_worksheetname Call item.Init Dim wb1 As Workbook ' : Set wb1 = item.Get_wb01() '<-ここでコンパイルエラーが発生 ' : '----------------------------------------------------------------------------------------- ' ここからクラスモジュール '----------------------------------------------------------------------------------------- Private file01 As String ' : Private wb01 As Workbook ' : '----------------------------------------------------------------------------------------- 'ファイルを読み込みworkbookを取得する '----------------------------------------------------------------------------------------- Public Sub Init() Dim path1 As String ' : Call GetTableInfo path1 = ThisWorkbook.path & "\" & file01 ' : If Dir(path1) = "" Then MsgBox "指定した""" & path1 & """ファイルは存在していません" Exit Sub End If ' : Set wb01 = Workbooks.Open(path1) ' : End Sub '----------------------------------------------------------------------------------------- ' Get_wb01 '----------------------------------------------------------------------------------------- Public Property Get Get_wb01() As Workbook Get_wb01 = wb01 End Property

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2019/09/25 22:18 編集

あーソースの中に記載しているのか。。。 以下は無視して下さい エラーメッセージは省略せず全て質問に記載して下さい。 どこでそのエラーが発生しているのかという重要な情報が抜け落ちてます
tatsu99

2019/09/25 22:50

Call GetTableInfo のGetTableInfoはどこで定義されてますか。
hankyo01

2019/09/26 00:58

GetTableInfo関数はInit()のfile01変数を取る為にクラスモジュール内に定義されています。
hatena19

2019/09/26 02:08

file01 に値を設定するコードがありませんが、それがクラスモジュールのすべてのコードですか。 それだけではどうしたって動きませんよ。
hatena19

2019/09/26 02:11

あっ、GetTableInfo で取得しているのか? それも省略せずに乗せたほうがいいと思います。 原因は、Set がないからだとは思いますが。
hankyo01

2019/09/26 12:38

わかりにくくてすみませんでした。 無事動作いたしました。どうもありがとうございました。
guest

回答1

0

ベストアンサー

Get_wb01で戻り値に=で代入しているからではないでしょうか?
オブジェクトなのでSetする必要があると思います。

VBA

1Get_wb01 = wb01 23Set Get_wb01 = wb01

投稿2019/09/25 23:42

ttyp03

総合スコア17000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hankyo01

2019/09/26 01:00

回答ありがとうございます。帰宅後ためしてみます。
hankyo01

2019/09/26 12:39

無事動作することが確認できました。 どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問