• ベストアンサー

フォーム間での共有変数

今、フォームを二つ表示し、お互い共通の変数を使って値の受け渡しをさせたいのですが、どうもうまくいきません。 知り合いには標準モジュールを使えばいいって聞いたので さっそく「プロジェクト」→「標準モジュールの追加」をし、 でてきたエディタに変数を追加 起動してみると・・・ちゃんと値の受け渡しができていませんでした。 ただ追加するだけでは受け渡しはできないのでしょうか? それとも標準モジュールの時点で間違いでしょうか? どなたか、レスお待ちしてます

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

  • ベストアンサー
  • Yackn
  • ベストアンサー率42% (12/28)
回答No.1

標準モジュールを使っても使わなくてもいいのですが、変数のスコープが足りないようですね。 いちばん簡単に変数の共有をしたいのであればGlobalを使用します。 標準モジュールに global HogeHoge as string としておけば、変数の共有が可能です。 勉強中のようですので参考になる言葉をいくつか(^^) スコープ Public Private これらをMSDNに入れて参照してください。 勉強になりますよ。

blackcat3
質問者

お礼

Yacknさん、おかげで共有することができました^^ なるほど、globalか・・・これは聞いていませんでした(^^; あと、スコープなども調べてみました 確かに勉強になることが色々書かれていました^^ これを参考にして頑張ってみるつもりです 本当にありがとうございました

関連するQ&A

  • VBA 変数の受け渡し

    エクセルVBAで標準モジュール内でインプットボックスに入力した変数をユーザーフォームに受け渡してユーザーフォーム内のリストボックスに表示させる場合どのように変数の受け渡しを行えばよいか教えてください。 現在は、一度ワークシートの任意のセルに値を書き出し、その後ユーザーフォームのイニシャライズで先ほどのセルから値を受け取るようにしています。 標準モジュールではインプットボックス入力後「UserForm1.Show」でユーザーフォームの立ち上げを行っています。

  • VBのフォームモジュールと標準モジュールの使い分け

    VBのフォームモジュールと標準モジュールの使い分けが今一つわかっていません。 フォームモジュールとは、フォーム(画面)上で起こったイベント(例えば、ボタンをクリックした時とか、ユーザーが行を選択したりだとか)の処理を、記述するところと解釈しています。 標準モジュールは、フォームが2つ以上あって、その2つが共通する処理(関数)などを、記述したり、フォームが1つでも、同じ処理を繰り返す場合、その処理を標準モジュールに書いたり・・・・という解釈をしています。 あってますでしょうか? フォームが一つしかない場合、もしくは2つあっても、あまり共通する処理がない場合、なんかは標準モジュールはあまり使わないのでしょうか? それとも、フォームが1つとかでも、今後のメンテの事など考慮して、標準モジュールを作ってそこにグローバル変数なんかで処理を書いた方がよいのでしょうか? どなたか、教えてくださいませんか? いろいろBBSなどで見てみるんですが、いろいろ書いてあって、どれが理想か わかりません。よろしくお願いいたします。

  • フォームのテキストボックスなどの変数名を標準モジュールから参照は可能か?

    フォームのテキストボックスなどの変数を標準モジュールの関数から参照する方法を教えてください。 お願いします。

  • ExcelのVBA。public変数の値が消える

    VBAについて。Excelの2003や2007を使っています。標準モジュールで public 変数を定義しました。 ユーザーformを使い、パブリック変数に値を入れたり変更し、標準モジュールに戻ったとき、そのpabulic変数が resetされてしまっている事があります。全く同じマクロで、この現象が起こることと、起こらないことがあります。excelの2003でも2007でも、同じ現象が起こります。簡単なマクロで再現性のある具体的なものを示したいと思い、試しましたが、できませんでした。簡単なマクロでは、きちんとパブリック変数は保持されています。問題のあるマクロはかなり長いものなので、とても示せません。問題がどこにあるのかわかりません。このマクロで不都合があるという具体的なマクロを示すことができない状態での質問で、申し訳ありません。 また、このようなプログラミングをしていて思ったのですが、ユーザーフォームに対してユーザーが任意の引数を渡す方法あるいは、ユーザーフォームから引数を受け取る方法はあるのですか?今は、pubulic変数を用いたり、具体的なセルに値を代入したりしていますが、どう考えてもそれはエレガントではないし、汎用性もないと思います。引数で引き渡すのが一番綺麗でいいとは思うのですが、それが可能かどうかわかりません。

  • ユーザーフォームと標準モジュール間での変数の共有

    ユーザーフォームと標準モジュール間での変数の共有 お世話になります。 以下のようなVBAで最下行のユーザーフォームに移るときに変数「Sheet」の値を受け渡すためインターネットで調べて「Public Sheet As Integer」という行を付け加えました。 しかし、「SubまたはFunctionの属性が適切ではありません」とエラーアラートが出て止まってしまいます。 エラーの意味を教えてください。 また、解決法もお願いします。 プログラムはこの後もあり、ユーザーフォームで取得したデータを標準モジュール内でも使いたいと考えています。 よろしくお願いします。 Sub 品番検索() Dim hinban As String Dim y, n Dim A0check(1 To 20) As String ' 要素数5個(1~5)の配列 Public Sheet As Integer C = 1 cc = 1 y = 16 Worksheets("発注FM").Range("b16:K35").Value = "" '最初のクリアー rwms = InputBox("メーカー名はどちらですか。" & Chr(13) & "キャンセルで入力終了", "メーカー名", "MS") If rwms = "RW" Then Sheet = "履歴RW" Else Sheet = "履歴MS" End If hinban = " " '初期値で必要 While hinban <> "" Do Load UserForm1 UserForm1.Show ・ ・ ・ ・

  • Delphi 動的コンポーネントのプロパティ 別フォームから取得

    すみません、どなたか教えて下さい。 Aフォームに動的コンポーネントを作成します。 Aフォーム内変数宣言 Edit: array[0..5] of TEdit; そして、Aフォーム内に値が入り、その値をBフォームで取得したいのですが方法がわかりません。 (コンポーネントを動的に作成しない時の取得は正常にできます) プロジェクト共通の変数を定義するようなことは可能でしょうか? それとも、他に取得する方法があるでしょうか?? よろしくお願い致します。

  • 複数のフォーム間での変数宣言

    VB6.0についての質問です。ひとつのプロジェクトの中に複数のフォームがあるとします。この中のある一つのフォームで変数 NUM を宣言し、何かの計算値を入れます。このNUMを値は保持したまま、他のフォームで利用することはできるのでしょうか? とりあえず全てのフォームのコードの先頭(プロシージャの外、Option Explicit下)に「Public NUM As Single」と宣言して挑戦してみたのですが、駄目でした。。よろしくお願いします。

  • Excel2003 VBAでフォーム渡し

    Excel2003 VBAのフォームを標準モジュールに渡してコントロールできますか? フォームのコードから、標準モジュールにフォームを引数で渡して、操作したいと思っています。 フォームの操作で同じ処理が発生するので、標準モジュールで共通に使いたいのですが、思い通りにいきません。 ネットで調べたりしましたが、解決できずにこちらに質問させて頂きました。 よい方法をご存知の方がいらっしゃましたら、ご教授ください。 よろしくお願い致します。

  • VBA 標準モジュールとフォーム

    ある標準モジュール内で生成した変数の値をフォームのコマンドボタンをクリックしたら表示されるプログラムはどうやってつくるのですか? 標準モジュール sub test() dim a as integer dim b as integer dim sum as string a=5 b=1 sum=a+b End sub フォームのコマンドボタンクリック Sub CommandButton1_Click() MsgBox sum End Sub 標準モジュールで計算した答えがフォームのコマンドボタンをクリックしたら答え6が表示されるようにしたいのですが、どうしたらできますか?

  • フォーム名一覧の取得

    VB6を使用しております。 プロジェクト内のフォーム、標準モジュールの一覧を 取得する方法を探しております。 ご存知の方がいらっしゃいましたら 教えてください。 よろしくお願い致します。

専門家に質問してみよう