質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

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

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

解決済

VBAクラスモジュールでの配列生成と取り出し

Kobayakawa
Kobayakawa

総合スコア1

VBA

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

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

1回答

0評価

0クリップ

367閲覧

投稿2022/07/26 08:29

前提

はじめまして。
初めてteratailに登録して質問します。
失礼あれば申し訳ありません。

VBAでクラスモジュールを練習していますが、
流れやルールがいまいち理解できず苦戦しております。
よろしくお願いします。

実現したいこと

class1で各列の設定
class2で二次元配列格納
メインのsubプロシージャで出力・調整
のようなことを目指しているのですが
格納までは出来たのですが配列から取り出せない状況です。

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

エラーメッセージ ```SubまたはFunctionが定義されていません。 ### 該当のソースコード ```VBA /////Quake(class1) Private OccursDay_ As Date Private Intensity_ As String Public Property Get OccursDay() As Date OccursDay = OccursDay_ End Property Public Property Let OccursDay(ByVal var As Date) OccursDay_ = var End Property Public Property Get Intensity() As String Intensity = Intensity_ End Property Public Property Let Intensity(ByVal var As String) Intensity_ = var End Property --------------------------------------------------------------------- /////Quakes(class2) Private Sub Class_Initialize() Dim Earray() As Quake Dim i As Long Dim Count As Long: Count = 1 Dim LastRow As Long LastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row With Sheet1 For i = 2 To LastRow ReDim Preserve Earray(Count) Set Earray(Count) = New Quake Earray(Count).OccursDay = .Cells(i, 1) Earray(Count).Intensity = .Cells(i, 8) Count = Count + 1 Next End With End Sub Public Property Get q_(ByVal var As Variant) As Quake q_ = Earray(var) End Property ------------------------------------------------------------------------ /////標準モジュール Sub test() Dim q As Quakes: Set q = New Quakes Debug.Print q.q_(1).Intensity End Sub

試したこと

Class2のGetプロパティを色々設定してみましたが、
配列をtestプロシージャから取得出来ません。

補足情報(FW/ツールのバージョンなど)

Windows11
Office365

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

meg_

2022/07/26 12:40

エラーはどこで発生するのでしょうか?
Kobayakawa

2022/07/26 12:57

エラーはclass2の q_ = Earray(var) の部分です。 おそらくいろいろ誤っている点があるかと思います。 よろしくお願いします。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。