Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3338 / 13646 ツリー ←次へ | 前へ→

【62860】VBAにおける変数の扱いについて kumasan 09/9/9(水) 19:25 質問[未読]
【62861】Re:VBAにおける変数の扱いについて まるちか 09/9/9(水) 19:36 回答[未読]
【62862】Re:VBAにおける変数の扱いについて kumasan 09/9/9(水) 20:13 お礼[未読]
【62863】Re:VBAにおける変数の扱いについて ichinose 09/9/9(水) 20:35 発言[未読]
【62864】Re:VBAにおける変数の扱いについて 追伸 ichinose 09/9/9(水) 20:40 発言[未読]
【62870】Re:VBAにおける変数の扱いについて kumasan 09/9/10(木) 6:36 お礼[未読]

【62860】VBAにおける変数の扱いについて
質問  kumasan  - 09/9/9(水) 19:25 -

引用なし
パスワード
   kumasanです
Excel 2002 SP3を利用しています
VBAにおける変数の扱いについて質問させてください

UserFormの
CommandButton1 で処理をした後
Module1に記載している
Sub XXX ()
の中にある変数に値を引継ぎたいと思っています

ということで例えば

CommandButtonのトップに

Public hikitugi As String

としてhikitugiの変数をPublic変数で記載しました

そのあと、

hikitugi = "aaa"
と処理をして
module1.sub XXX () として
その中にある
変数hikitugiの値を表示したいのですが
引き継がれません

どのような処理にすればいいか教えていただきませんか
よろしくお願いします。

【62861】Re:VBAにおける変数の扱いについて
回答  まるちか  - 09/9/9(水) 19:36 -

引用なし
パスワード
   文章で「ああした、こうした」とかいても
その通り正しくできているかの評価はできません。
説明するなら実際のコードを見せたほうがいいと思います。
今回の様に説明文があいまいだとさらに困ってしまいます。

-----------------------------------------------------------
UserformのPublic変数を別モジュールから見るならば
そのUserformを装飾しないといけません。
別の方法としてはModle側に宣言するとか、引数にするとか。
-----------------------------------------------------------

どっちにしても失敗コードを隠さず見ないと
修正するのにかなり遠回りかと。

【62862】Re:VBAにおける変数の扱いについて
お礼  kumasan  - 09/9/9(水) 20:13 -

引用なし
パスワード
   ▼まるちか さん:

kumasanです
早速、回答いただきありがとうございました。

質問文があいまいで申し訳ありませんでした。

 module側のTOPに記載することでうまくいきました

 回答いただいたものをみると引数ということもある
 ということですが、これについては別途勉強したいと
 思います
 ありがとうございました。


>文章で「ああした、こうした」とかいても
>その通り正しくできているかの評価はできません。
>説明するなら実際のコードを見せたほうがいいと思います。
>今回の様に説明文があいまいだとさらに困ってしまいます。
>
>-----------------------------------------------------------
>UserformのPublic変数を別モジュールから見るならば
>そのUserformを装飾しないといけません。
>別の方法としてはModle側に宣言するとか、引数にするとか。
>-----------------------------------------------------------
>
>どっちにしても失敗コードを隠さず見ないと
>修正するのにかなり遠回りかと。

【62863】Re:VBAにおける変数の扱いについて
発言  ichinose  - 09/9/9(水) 20:35 -

引用なし
パスワード
   こんばんは。

> module側のTOPに記載することでうまくいきました
一番問題の多い解決方法を選択されたような気がしますよ!!

標準モジュール側(module1)に
Public hikitugi as string
sub XXX()
  msgbox hikitugi
End sub


Useform1のモジュール内(Commandbutton1があるとして)で

Private Sub CommandButton1_Click()
  hikitugi = "aaa"
  Module1.xxx
End Sub

などとすれば、コマンドボタンのクリックで確かに aaaと表示されるでしょうが・・。

モジュール間やプロシジャー間の結合度が強いものになってしまい
柔軟性に欠いた構造になってしまいます。

この場合なら、パラメータを使ってデータを渡すのが一般的です。


標準モジュール側(module1)に

sub XXX(hikitugi as string)
  msgbox hikitugi
End sub


Useform1のモジュール内(Commandbutton1があるとして)で

Private Sub CommandButton1_Click()
  dim 引き継ぎ as string
  引き継ぎ = "aaa"
  Module1.xxx 引き継ぎ
End Sub


以前に

www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=28808;id=excel

こんな投稿をさせてもらったことがありました。
検討してみてください。

【62864】Re:VBAにおける変数の扱いについて 追伸
発言  ichinose  - 09/9/9(水) 20:40 -

引用なし
パスワード
   プログラムの流れ(フロー)が前投稿と違うなら、

www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=62762;id=excel

これも参考にしてください。

【62870】Re:VBAにおける変数の扱いについて
お礼  kumasan  - 09/9/10(木) 6:36 -

引用なし
パスワード
   ▼ichinose さん:

おはようございます
kumasanです
昨晩は、変数の値が簡単に引き継がれたので「よかった」ということで
そのままにしていました

後で、ichinoseさんの言われている下記の点について
勉強します
助かります

ありがとうございました。


>こんばんは。
>
>> module側のTOPに記載することでうまくいきました
>一番問題の多い解決方法を選択されたような気がしますよ!!
>
>標準モジュール側(module1)に
>Public hikitugi as string
>sub XXX()
>  msgbox hikitugi
>End sub
>
>
>Useform1のモジュール内(Commandbutton1があるとして)で
>
>Private Sub CommandButton1_Click()
>  hikitugi = "aaa"
>  Module1.xxx
>End Sub
>
>などとすれば、コマンドボタンのクリックで確かに aaaと表示されるでしょうが・・。
>
>モジュール間やプロシジャー間の結合度が強いものになってしまい
>柔軟性に欠いた構造になってしまいます。
>
>この場合なら、パラメータを使ってデータを渡すのが一般的です。
>
>
>標準モジュール側(module1)に
>
>sub XXX(hikitugi as string)
>  msgbox hikitugi
>End sub
>
>
>Useform1のモジュール内(Commandbutton1があるとして)で
>
>Private Sub CommandButton1_Click()
>  dim 引き継ぎ as string
>  引き継ぎ = "aaa"
>  Module1.xxx 引き継ぎ
>End Sub
>
>
>以前に
>
>www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=28808;id=excel
>
>こんな投稿をさせてもらったことがありました。
>検討してみてください。

3338 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free