Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2010)
インスタンスの生成について、ご存知の方お願いします。
投稿日時: 18/03/25 13:13:06
投稿者: 幽々子

 インスタンスの生成は、私の場合は
 Dim ClassDD As Class1
 Set ClassDD = New Class1
 の形式にて、行っています。
  
少数なら困りませんが、100人分(多数の項目)を2次元配列にすると、
各個人各項目の情報量に変動(0〜20)があり、情報の扱いに混乱きたしてしまい。
扱いが難しいため、クラスモジュールを検討しています。
 
リテラルではない、複数のインスタンスをする方法を模索しています。
 
FORやDoなどで順次、名前を生成したいのですが、
リテラルでないとDim ClassDD As Class1の宣言おいてエラー起きてしまい、
変動する命名は出来ないのではないのかなと思い、
ポスティングさせていただきます。

回答
投稿日時: 18/03/25 14:49:25
投稿者: WinArrow
投稿者のウェブサイトに移動

>Dim ClassDD As Class1
を配列にすればよいでしょう。
 

Dim CLASSDD() As Class1
Dim Dx As Long
 
    Dx = 100
    ReDim CLASSDD(Dx)
    For Dx = 0 To UBound(CLASSDD)
        Set CLASSDD(Dx) = New Class1
    Next
 

回答
投稿日時: 18/03/25 15:24:27
投稿者: WinArrow
投稿者のウェブサイトに移動

クラスモジュールを使わなくても、また、二次元配列を使わなくても
解決方法はあると思います。
 

 
Private Type personal
   pName As String
   pBarthday As Date
   pAddres As String
End Type
    
Sub test()
Dim pData() As personal
Dim Px As Long
 
    ReDim pData(1 To 100)
    For Px = 1 To 100
        pData(Px).pName = "n番目の人の名前"
        pData(Px).pBarthday = "n番目の人の生年月日"
    Next
     
End Sub

投稿日時: 18/03/25 17:00:50
投稿者: 幽々子

WinArrow 様
貴重なお時間と知見を頂きまして、ありがとうございます。
 
Dim CLASSDD() As Class1 は思いつきませんでした。
理想的な形での、情報 『蓄積・加工・書出し』 が可能になりました。
 
>Private Type personal
> pName As String
> pBarthday As Date
> pAddres As String
>End Type
2点目の手法についてですが、Enumと言う列挙体は存じておりましたが、
Type personal は当人に無い知識でしたので、少々調べて勉強します。
 
当方、独学ゆえに知識に偏りがあり、非常に有り難い限りです。
大変感謝しております。