VBA-クラスモジュールの呼び出し方法を理解しようとしています

CDay

GoogleやYouTubeなどでVBAを学んでいて、クラスモジュールに出くわしました。

私は持っていTracker Templateます。
数日おきにレポートが送られてきます("Ice cream FG Inv.xlsm"

を理解しようとしているClass Modulesときに、(トラッカーテンプレート内に)クラスモジュールを作成し、内のWBIceCreamFGINVxlsmすべてのワークシートのコードネームを作成するテンプレートを見つけましたIce Cream FG Inv.xlsm Workbook

例:

Public Property Get wsinventory() As Worksheet
    Set wsinventory = Workbook.Worksheets("Inventory")
End Property

私のモジュールでは、参照したいのですwsinventoryが、クラスモジュールを「呼び出す」方法を正確に理解していません。

両方のワークブックが開いています。

私は始めようとしました:

Dim Data As Variant
    Data = wsinventory.Range("A1").CurrentRegion.Value   (**Variable not Defined**)

それから私は試しました:

Dim wsinventory As Worksheets
With wsinventory
    Dim Data As Variant
        Data = .Range("A1").CurrentRegion.Value (**Object variable or With variable not set**)
End With

それでも使用する必要がありますか:

Dim DataSource As Workbook
Set DataSource = Workbooks("Ice Cream FG Inv.xlsm")
    With DataSource.Worksheets("Inventory")
    End With

もしそうなら、クラスモジュールを使用する理由は何でしょうか?

ウォーキュパイン

そのクラスのプロパティにアクセスする前に、クラスオブジェクトを作成する必要があります。

あなたがこのクラスを持っていると仮定して、それに名前を付けますTestClass

Private pwsinventory As Worksheet

Public Sub init()
    Set pwsinventory = Worksheets("Inventory")
End Sub

Public Property Set wsinventory(lwsinventory As Worksheet)
    Set pwsinventory = lwsinventory
End Property

Public Property Get wsinventory() As Worksheet
    Set wsinventory = pwsinventory
End Property

次のようにプロパティを設定/取得できます。

Sub test()
    Dim datacls As TestClass
    Dim data As Worksheet
    
    Set datacls = New TestClass
    Set datacls.wsinventory = Worksheets("inventory")
    Set data = datacls.wsinventory
    
    Debug.Print data.Name
End Sub

ただし、これはちょっと奇妙なことであり、設定したくないプロパティがある場合(引数を渡す必要がある場合)は、開始関数を使用する必要があります。残念ながら、クラスオブジェクトの作成後にそのサブを手動で呼び出さずにこれを行う方法はありません。

Sub Test2()
    Dim datacls As TestClass
    
    Set datacls = New TestClass
    
    datacls.init
    
    Debug.Print datacls.wsinventory.Name
End Sub

私がクラスを使用する最も一般的なケースは、より良いコンテナーです。通常、同じクラスタイプの多くを配列/ディクショナリ内に格納するため、特に各インスタンスで同じ方法でデータを変更する必要がある場合は、何を呼び出しているかが明確になります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

VBAへのアクセス-変数を使用して、フォームのモジュール内のサブルーチン/関数を呼び出します

分類Dev

Excelの数式でVBAクラスモジュールを呼び出す

分類Dev

VBA-モジュールを呼び出すと、「モジュールではなく、予期される変数プロシージャ」が発生します

分類Dev

VBA:クラスモジュールの配列を作成します

分類Dev

ワークシートとしてのVBAクラスモジュール

分類Dev

変数VBAを使用してフォーム/モジュールを呼び出す

分類Dev

VBA:特定のモジュールを開いているときにDLLエラーが発生しました

分類Dev

VBAクラスモジュールのコレクションを正しく操作するにはどうすればよいですか?

分類Dev

VBAでクラス関数を呼び出すときにエラーが発生しました

分類Dev

オブジェクト変数の取得、ブロック変数が設定されていないVBAを使用してSQLServerストアドプロシージャをプルしようとするとエラーが発生します

分類Dev

VBA:クラスモジュール/コレクションおよび/または動的配列を使用しますか?

分類Dev

VBAクラスモジュール:別のプロパティを使用してオブジェクトからプロパティを取得します

分類Dev

VBA Excelで変数スコープを理解しようとしていますか?

分類Dev

VBAワークシートループから特定のシートを除外しようとしています

分類Dev

C#Excel VBAは、モジュール名を言語に依存しないようにします

分類Dev

VBAを使用してデフォルトのMSWord 2016オプションを変更し、PDFとして保存すると、見出しがブックマークとして含まれるようにするにはどうすればよいですか?

分類Dev

実行時エラー13:別のブックから関数を呼び出そうとすると、VBAに「不一致」と入力します

分類Dev

テキストボックスに特定のテキストを含むMicrosoftWord(VBA)のページを削除しようとしています

分類Dev

VBA Wordnormal.dotmからクラスモジュールオブジェクトを作成します

分類Dev

保存しようとするとVBAマクロがエラーをスローします(ただし、1台のコンピューターのみ)

分類Dev

vbaを使用してExcelのENTERキーで関数を呼び出す方法

分類Dev

VBAを使用して2番目のブックでデータを検索しようとしています

分類Dev

vba、開いているフォルダのアドレスを変更しようとしています

分類Dev

VBA-モジュールからProcessBarを更新しています-エラー800100007

分類Dev

VBAでDoWhileループを修正しようとしています

分類Dev

Excel VBA-バッチファイルリストに基づいて300のワークブック範囲をシートにコピーしようとしましたが、「範囲クラスの特別なメソッドの貼り付けに失敗しました」というエラーが表示されます

分類Dev

エラー13VBA、pptに画像を挿入しようとしています/既存のpptを使用しようとしています

分類Dev

VBAマクロ:jsonデータを返すVBAマクロを編集しようとしています

分類Dev

VBAクラスモジュール:クラス内のオブジェクトからプロパティを取得します

Related 関連記事

  1. 1

    VBAへのアクセス-変数を使用して、フォームのモジュール内のサブルーチン/関数を呼び出します

  2. 2

    Excelの数式でVBAクラスモジュールを呼び出す

  3. 3

    VBA-モジュールを呼び出すと、「モジュールではなく、予期される変数プロシージャ」が発生します

  4. 4

    VBA:クラスモジュールの配列を作成します

  5. 5

    ワークシートとしてのVBAクラスモジュール

  6. 6

    変数VBAを使用してフォーム/モジュールを呼び出す

  7. 7

    VBA:特定のモジュールを開いているときにDLLエラーが発生しました

  8. 8

    VBAクラスモジュールのコレクションを正しく操作するにはどうすればよいですか?

  9. 9

    VBAでクラス関数を呼び出すときにエラーが発生しました

  10. 10

    オブジェクト変数の取得、ブロック変数が設定されていないVBAを使用してSQLServerストアドプロシージャをプルしようとするとエラーが発生します

  11. 11

    VBA:クラスモジュール/コレクションおよび/または動的配列を使用しますか?

  12. 12

    VBAクラスモジュール:別のプロパティを使用してオブジェクトからプロパティを取得します

  13. 13

    VBA Excelで変数スコープを理解しようとしていますか?

  14. 14

    VBAワークシートループから特定のシートを除外しようとしています

  15. 15

    C#Excel VBAは、モジュール名を言語に依存しないようにします

  16. 16

    VBAを使用してデフォルトのMSWord 2016オプションを変更し、PDFとして保存すると、見出しがブックマークとして含まれるようにするにはどうすればよいですか?

  17. 17

    実行時エラー13:別のブックから関数を呼び出そうとすると、VBAに「不一致」と入力します

  18. 18

    テキストボックスに特定のテキストを含むMicrosoftWord(VBA)のページを削除しようとしています

  19. 19

    VBA Wordnormal.dotmからクラスモジュールオブジェクトを作成します

  20. 20

    保存しようとするとVBAマクロがエラーをスローします(ただし、1台のコンピューターのみ)

  21. 21

    vbaを使用してExcelのENTERキーで関数を呼び出す方法

  22. 22

    VBAを使用して2番目のブックでデータを検索しようとしています

  23. 23

    vba、開いているフォルダのアドレスを変更しようとしています

  24. 24

    VBA-モジュールからProcessBarを更新しています-エラー800100007

  25. 25

    VBAでDoWhileループを修正しようとしています

  26. 26

    Excel VBA-バッチファイルリストに基づいて300のワークブック範囲をシートにコピーしようとしましたが、「範囲クラスの特別なメソッドの貼り付けに失敗しました」というエラーが表示されます

  27. 27

    エラー13VBA、pptに画像を挿入しようとしています/既存のpptを使用しようとしています

  28. 28

    VBAマクロ:jsonデータを返すVBAマクロを編集しようとしています

  29. 29

    VBAクラスモジュール:クラス内のオブジェクトからプロパティを取得します

ホットタグ

アーカイブ