トップページ > プログラム > 2015年03月30日 > hZPESK0V

書き込み順位&時間帯一覧

32 位/195 ID中時間01234567891011121314151617181920212223Total
書き込み数0000002000000000000000002



使用した名前一覧書き込んだスレッド一覧
867
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net

書き込みレス一覧

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
870 :867[sage]:2015/03/30(月) 06:50:14.17 ID:hZPESK0V
>>868
>配列を渡したい場合はPublicで宣言するしかないでしょうか?

んなこたないけど、まぁそれが一番お手軽っちゃお手軽だろうね。
ただ、何度も言うけどPublic(グローバル変数)ってのはあんまり使いたくはないし、結局はフォーム内でややこしい変数使うような設計自体が間違ってるんだと思う。
もちろんひとつのフォーム内で処理を完結できるならそういうことやっても良いんだけど、複数のフォームを遷移して処理を引き継ぐようなら個別のフォーム内でそんなにややこしい事をさせるべきではない(と個人的に思う)。
せめて大元の処理(ジャグ配列を必要とする部分)は標準モジュールに書いておいて、そこから必要に応じて個々のフォームに値を引き渡し、フォームでの入出力を終えたら標準モジュールに値を戻す。
別のフォームに対してもその繰り返し、というパターンで作っといたほうが後々のメンテナンス性とかも高いんじゃないかな?
イメージとしてはこんな感じ(ジャグ配列の書き方が良く分らんからとりあえず普通の配列で書いときます)
改行多いんで続きます……
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
871 :867[sage]:2015/03/30(月) 06:52:38.23 ID:hZPESK0V
>>870の続きです

Sub Test()
Dim i
Dim A(1 To 2)
With UserForm1
.Show 'ユーザーフォーム1で値を取得後、Hideで戻ってくる
'フォーム内の値を配列変数に格納
For i = 1 To 2
 A(i) = .Controls("TextBox" & i)
Next i
End With
Unload UserForm1
With UserForm2
'配列変数の値をユーザーフォーム2に渡す
For i = 1 To 2
 .Controls("Label" & i) = A(i)
Next i
.Show ’ユーザーフォーム2で表示
End With
Unload UserForm2
End Sub

UserForm1にはフォーム閉じる用のボタンを用意しとく
Private Sub CommandButton1_Click()
Me.Hide
End Sub


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。