開発環境VB6.0 Win2000です。
いつもお世話になっております。
今組んでいるプログラムで引っかかってしまい、何か案があれば
と思い書きました。自分ではどうしてもネタが思い浮かばなかったもので・・・
for i = 1 to 5
m01Date = date
m01ID = ID
next
このようなループ処理を行っておりますが、m01の部分をループ変数を使用して
for i = 1 to 5
m0 & i & date = date
m0 & i & ID = ID
next
と、このような形にしたいのですがこれでは構文エラーになってしまいます(あたりまえですが・・・
どうかうまくこのようなループ処理を行う方法のアイディアをお持ちの方が
いらっしゃいましたらご教授願えませんでしょうか?
よろしくお願いします
ユーザー定義型を使うのはダメですか?
Option Explicit
Private Type m
Date As Date
ID As Integer
End Type
Private Sub Command1_Click()
Dim m0(1 To 5) As m
For i = 1 To 5
m0(i).Date = Date
m0(i).ID = ID
Next i
End Sub
LESIAさん、早々のレスありがとうございます。
レスをいただけて嬉しかったです。
解りづらい説明で申し訳ありませんでした。
m01Date,m01IDはクラスモジュールで宣言しているのです。
'----クラスモジュール(clsObj)--
変数宣言のみを行っています。
public m01Date as variant
public m01ID as variant
・
・
public m05Date as variant
public m05ID as variant
'---メインフォーム(frmMain)---
dim obj as new clsObj
for i = 1 to 5
with obj
.m01Date = date ←.m0 & i & Date = date
.m01ID = ID ←.m0 & i & ID = ID このようにしたいです。
end with
next
このように使用しています。
自分でもうまく処理することが出来ないか試してはいるのですが、なかなかうまく解決することが出来ません。
解りづらいソースと稚拙な説明で時間を取らせてしまい申し訳ないです。
もしよい解決法がありましたらご教授願います。
自分でもソースをいじってやってみます。
クラスで宣言しているなら、CallByName関数が使えます。
For i = 1 To 5
CallByName obj, "m0" & i & "Date", VbLet, Date
CallByName obj, "m0" & i & "ID", VbLet, ID
Next i
For i = 1 To 5
Debug.Print CallByName(obj, "m0" & i & "Date", VbGet)
Debug.Print CallByName(obj, "m0" & i & "ID", VbGet)
Next i
LESIAさん、またまたレスを下さりありがとうございました。
CallByName関数というのははじめて知ったのですが、
LESIAさんが提示した下さった書き方をしてみた所、望みの動きが出来ました!
本当にありがとうございました。
助かりました!!!