• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBA ユーザーフォーム間の変数について)

ExcelVBA ユーザーフォーム間の変数について

このQ&Aのポイント
  • ExcelVBAでユーザーフォーム間の変数を扱う方法について教えてください。
  • ユーザーフォーム1のコントロールボタンをクリックしてユーザーフォーム2を開き、ユーザーフォーム2のテキストボックスに入力された値をユーザーフォーム1に自動入力するにはどうすればいいですか?
  • ユーザーフォーム2を開いたときにユーザーフォーム1の変数がリセットされてしまう問題を解決する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

別にどこからパブリックを出しても、間違えなければいいだけのことです。 標準モジュールでパブリック宣言しても、結局Module1.Numberのように参照しなきゃならないのは変わりません。 ワークシートに記録する方法にしても、記録したワークシートの名称、セル番地を間違えたら何にもなりません。それならまだパブリック変数で宣言しておいて、VBEの入力支援(UserForm1.まで書けば、そこでパブリック宣言されている変数がガイドされる)を使った方が、間違いを逃れるチャンスがあるかもです。 ただまぁ、ベターという事で言えば標準モジュールの方がベターと思います。 たとえばUserForm1からパブリック変数を出すと、状況によっては変数を呼ぶだけでUserForm1がロードされてInitializeが意図せず走ったり、逆に本来UserForm1を初期化したかったところで処理が抜けたりみたいな事も起こる可能性はあります。

kazak
質問者

お礼

ありがとうございます。 なかなかここまでpublic変数について解説頂ける事はなく 非常に勉強になりました。 まずは回答頂いた方法で進めていきたいと思います。 また何かありました際はよろしくお願い致します。

その他の回答 (3)

noname#157410
noname#157410
回答No.3

Public変数は極力使わないように組んだ方がいいのでは? フォームなど多重に動かす場合、Public変数の内容消し忘れて、バグる場合有りますので。 callで他のフォーム変数引き渡ししたほうがいいのでは無いでしょうか?と思う次第です。 参考程度の回答です。 あまり気にしないでください。 あくまで個人的に思っているだけなので。

kazak
質問者

お礼

ご回答ありがとうございます。 callですか。はじめて聞きました。 少し調べてみましたが、すぐに理解はするのは難しそうですね。 勉強して取り入れてみたいと思います。

  • mpascal
  • ベストアンサー率21% (1136/5195)
回答No.2

public 変数は、フォームの外で定義すべきです。

kazak
質問者

お礼

ご回答ありがとうございます。 public変数は標準モジュールでという記述はネット上でも見かけますが、 当方の購入した本では冒頭で宣言すれば問題ないと書いてありました。 何か今後の処理で問題はあるのでしょうか?

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

UserForm1が先行して起動する前提で。 UserForm2で宣言している「Public Number as integer」は消去します。 その上で、UserForm1でPublic宣言している変数NumberをUserForm2から参照するため、UserForm2内では「UserFrom1.Number」とします。

kazak
質問者

お礼

返事が遅くなりまして申し訳ございません。 教えて頂いた方法で変数を移行する事ができました。 ありがとうございます。 ただ、他の回答の方も言っている、また調べた所、public変数はバグの原因となりやすい、 変数の値がリセットされる等があるようです。 ワークシート上に数字を代入し、それを参照する方がよいのでしょうか。 それですと変数を宣言する必要もないですし。

関連するQ&A

専門家に質問してみよう