変数の定義についての質問です。
説明が下手ですけど、よろしくお願いします。
private、publicにて、変数を定義する場合ですが、
プログラム起動時に、システム日付などによって、定義を動的にすることは
できないんでしょうか?
例えば、1日は構造体を1個、2日は2個...といったように、
プログラムを起動する日によって、定義する変数の構造体の数を変更したいんです。
構造体の数の変更後、プログラム実行時には
Redimで再定義をかけて、プログラムを実行したいんです。
構造体変数の定義を動的にすることは不可能でしょうか?
Public Type TableA
Str1 As String
Str2 As String
Str3 As String
End Type
Public HAIRETU() As TableA
このStr1〜Str3の部分を動的に設定し、
Public Type TableA
Str1 As String
End Type
Public HAIRETU() As TableA
の場合もあれば、
Public Type TableA
Str1 As String
Str2 As String
Str3 As String
Str4 As String
Str5 As String
End Type
Public HAIRETU() As TableA
もあるといった感じの設定です。
次のような感じでよいのでは?
Option Explicit
Private Type TableA
str() As String
End Type
Public HAIRETU() As TableA
Private Sub Form_Load()
ReDim HAIRETU(2)
ReDim HAIRETU(0).str(0)
ReDim HAIRETU(1).str(3)
ReDim HAIRETU(2).str(5)
End Sub
へいぽ様ありがとうございます
試してみたいのですが、少し私のやりた事と異なるので、アレンジしてやってみたところ、無理でした(泣)
Private Sub Form_Load()
ReDim HAIRETU(2)
ReDim HAIRETU(0).str(0)
ReDim HAIRETU(1).str(3)
ReDim HAIRETU(2).str(5)
End Sub
のように、HAIRETUをふやし、その中で、さらに、Strの数を増やすのではなく、HEIRETU()の数、Str()の数両方とも、動的ですが、Strの動的数は、
HEIRERU()すべての配列に対応します。
HRIRETU(1)の場合でも、HEIRETU(5)の場合でも、数に対応した動的配列
Str(10)が入るといった感じです。
このHEIRETUを、起動時に動的に設定したいのですが、上記にかいた、このStr1〜Str3の部分を動的に設定し、
Public Type TableA
Str1 As String
End Type
Public HAIRETU() As TableA
の場合もあれば
Public Type TableA
Str1 As String
Str2 As String
Str3 As String
Str4 As String
Str5 As String
End Type
Public HAIRETU() As TableA
もあるといった感じの設定です。 は、両方あるということではなく、
常にどちらか一方、といった感じに設定したいです。
プログラム上記に
Private Type ATable
str() As String
End Type
Public HAIRETU() As ATable
テーブルをまず宣言し、
プログラム内で、Max,Minを取得後、
ReDim HAIRETU(Max).str(Min)
と宣言しましたが、エラーになってしまいます。(泣)
どうすればいいでしょうか?
> プログラム内で、Max,Minを取得後、
> ReDim HAIRETU(Max).str(Min)
> と宣言しました
Max, Min が何なのか分かりませんが、
こういうことですか?
Option Explicit
Private Type TableA
str() As String
End Type
Public HAIRETU() As TableA
Private Sub Form_Load()
Dim i As Integer
ReDim HAIRETU(Max)
For i = 0 To Max
ReDim HAIRETU(i).str(Min)
Next i
End Sub