excelvbaでlistarrという配列をpublicで宣言しました。

UserForm2をshowして、UserForm2側から
listarrを参照したいですが、UserForm2で空になってしまいます。
こういったことはできないのでしょうか。。
▼Sheet1のVBAの記述
------------------------------------------
Public listarr As Variant
Private Sub TextBox1_LostFocus()
listarr = Array("AAA", "BBB", "CCC", "DDD", "EEE", "FFF")
UserForm2.Show
End Sub
------------------------------------------

▼UserFormの記述
------------------------------------------
Private Sub UserForm_Initialize()
With ListBox1
.List = listarr
End With
End Sub
------------------------------------------

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/11/06 00:43:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:taknt No.2

回答回数13539ベストアンサー獲得回数1198

ポイント100pt

listarrはPublicで宣言されているので、どこに記述してもかまいません。

参照する側が 「どこの」というのをつけないと ダメなだけです。

.List = listarr



.List = Sheets("Sheet1").listarr

id:yayayai

ありがとうございます‼︎
なんと、シートでパブリック宣言した場合は、オブジェクト指定する仕様は、まったく知りませんでした!
検証してみます!

2013/11/05 20:05:41

その他の回答1件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

できます。
変数の宣言を、シートではなく、標準モジュールでする必要があります。

「プロジェクト」で、ブックを右クリックして、「挿入」→「標準モジュール」と選びます。
ツリーの「標準モジュール」の下に「Module1」というのができるので、その中で Public で宣言してください。

http://pc.nikkeibp.co.jp/pc21/special/2007_gosa/eg5.shtml
↑の「変数の適用範囲(モジュール間)」のあたりを参考にしてください。

id:yayayai

ありがとうございます!

2013/11/05 20:06:30
id:taknt No.2

回答回数13539ベストアンサー獲得回数1198ここでベストアンサー

ポイント100pt

listarrはPublicで宣言されているので、どこに記述してもかまいません。

参照する側が 「どこの」というのをつけないと ダメなだけです。

.List = listarr



.List = Sheets("Sheet1").listarr

id:yayayai

ありがとうございます‼︎
なんと、シートでパブリック宣言した場合は、オブジェクト指定する仕様は、まったく知りませんでした!
検証してみます!

2013/11/05 20:05:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません