ここから本文です

VBAで、配列をユーザーフォーム間で共有する

アバター

ID非公開さん

2011/3/2901:32:46

VBAで、配列をユーザーフォーム間で共有する

今僕はユーザーフォームを作っていて、標準モジュールからユーザーフォーム1を開き、そこからユーザーフォーム2を開くという形にしたんですが。ここで、配列をそれぞれのコード(標準モジュール、uf1、uf2)間で共有する必要があったので、標準モジュール上で配列をPublicで定義したら、ユーザーフォームが開けませんでした(「オブジェクト定義のエラーが何とか」と出ました)。Publicでなくdimで定義したらもちろんユーザーフォーム1以下のコードでは未定義状態となっていました

どうやったら配列を共有できるんでしょうか?

閲覧数:
2,152
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

starryjammyさん

2011/3/2911:14:30

こんにちは。

実際のコードを見ないと原因が特定できませんが、
Public宣言のサンプルを提示します。

よろしければお試しください☆

準備:
UserForm1にCommandButton1,2作成
UserForm2にCommandButton1,2作成
下記コード貼り付け

'-----------------------
' UserForm1 モジュール
'-----------------------
Private Sub CommandButton1_Click()
MsgBox arr(1) 'パブリック変数を使用してみる
End Sub

Private Sub CommandButton2_Click()
UserForm2.Show
End Sub

'-----------------------
' UserForm2 モジュール
'-----------------------
Private Sub CommandButton1_Click()
MsgBox arr(2) 'パブリック変数を使用してみる
End Sub

Private Sub CommandButton2_Click()
Me.Hide
End Sub

'-----------------------
' 標準 モジュール
'-----------------------
Public arr() As String

Sub test()
Dim i As Long

ReDim arr(2)
For i = LBound(arr) To UBound(arr)
arr(i) = "配列" & i
Next

UserForm1.Show

End Sub

アバター

質問した人からのコメント

2011/3/29 16:39:17

お二方、ありがとうございます。
結局、示してくれたコードを張り付けて作り直したらうまくいきました。

ベストアンサー以外の回答

1〜1件/1件中

adsrfgfhyさん

2011/3/2906:26:09

ユーザーフォームと標準モジュール間での変数の共有
http://oshiete.goo.ne.jp/qa/6215603.html

変数を宣言している(Publicを記載している)
場所が違っている事はありませんか?

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

5文字以上入力してください

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。