- ベストアンサー
VBAで別モジュールへの変数の受け渡し方法
- VBAでセル内に記述した変数を別のモジュールに受け渡す方法を教えてください。
- Userform内の変数を他のモジュールで使用する方法について教えてください。
- VBAで変数を他のモジュールに渡す方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- sample_
- ベストアンサー率76% (20/26)
- SherlockHolmes2
- ベストアンサー率40% (175/429)
関連するQ&A
- VBAのCallステートメントについて
ExcelのSheet1にCommandButton1(表示)があります。 -------------------------------------------------- Private Sub 表示_Click() (DBより表示処理) End Sub -------------------------------------------------- UserForm1にCommandButton1(登録)があります。 -------------------------------------------------- Private Sub 登録_Click() (DBへの登録処理) UserForm1.Hide Call WorkSheets("Sheet1").表示_Click() ・・・☆ Exit Sub End Sub -------------------------------------------------- 表記のようなプログラムにしたところ、☆印のところで、 下記エラーが表示されてしまいます。 【エラー】--------------------------------------------------- 実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません。 ------------------------------------------------------------- どのようにしたらCallステートメントで表示_Clickを呼び出すことが できるのでしょうか。
- ベストアンサー
- Visual Basic
- フォームからモジュール内の処理を実行したい
Sub CommandButton_Click() 集計処理 End Sub 上記のコードでは何も処理されません。集計処理はModule1に入っています。いろいろ足りないと思うのですがどのようにするとよろしいでしょうか。
- ベストアンサー
- オフィス系ソフト
- 【VBA】値の引渡しについて
VBA初心者です。 VBAの勉強もかねて、今、【 標準モジュール 】と【 UserForm 】を用いて あるプログラムを作っています。 その中で、プロシージャ間をまたいで 『 値の受け渡し 』をしたいと思っています。 今回、質問をさせていただいたのは、その『 値の受け渡し 』が 「できる場合」と「できない場合」があるので、常にできるように その対応方法を教えていただきたく、今回投稿させていただきました。 ---------------------------------------------------------------- 今困っているパターンを例にあげると、 ユーザフォームの中に2つのボタン 「OK」ボタンと「キャンセル」ボタンが あるとします。 【 「キャンセル」ボタンがおされた場合には「終了する」 】という 仕組みにしたいと思っています。 そこで以下のようなプログラムを作ろうとしました。 ---------------------------------------------------------------- ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1) General部にPublic変数(以下「P変数」)を宣言する。 Public cancel as byte 2) 【標準モジュール】のプロシージャから【フォーム】の「Userform1」を表示させる。 Sub A処理() Userform1.show End sub 3) 【フォーム】のUserform1._CommandButton2に以下のように記述する。 (キャンセルボタンがクリックされた場合) Private Sub CommandButton2_Click() cancel = False Unload Me Exit Sub End Sub 4) 【標準モジュール】のプロシージャの、一連の処理の最後に 以下のようにプログラムを記述する。 Sub A処理() Userform1.show ↓ ↓ if cancel = false then exit sub end if End sub ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1)~4)のようにして 「キャンセルがクリックされた場合、すべての処理を終了する。」 というようなプログラムを記述してみました。 すると、デバッグを使って、変数「cancel」の中身を見てみると 3)の段階で、その変数「cancel」に「false」値を格納したはずなのに、 プロシージャ間をまたいだことで 4)の段階では、変数「cancel」の中身が必ず「""」と 値が空値になってしまいます。 4)の段階でも、変数「cancel」の値が保持できる、 何かしらの方法はないでしょうか。 回答をよろしくお願いします。
- 締切済み
- Visual Basic
- VBA:助けてください。呼び出してもいないのに独立なプロシージャへ、処理が飛んでしまう。アドバイスお願い致します。
Useform1のコマンドボタンをクリックすると Private Sub CommandButton1_Click() Call 処理 End Sub というように、「処理」を呼び出し。これで終わるようにしていました。しかし、不具合が出てしまい、ステップインで見てみると「処理」からEndSubに行き、その後Useform2のコマンドボタンイベントのEnd Withへ Private Sub CommandButton1_Click() With Userform1 .... End With ← ・・・ End Sub 上のように矢印の部分へ飛んでしまいます。全く、独立な、コマンドイベントへ飛んで処理されているのです。それも、飛んだ箇所がEnd Withからです。こんなことがあるのでしょうか? Private Sub CommandButton1_Click() Call 処理 Exit Sub End Sub 上のようにExit Subを追加してもやはりそこから飛んでしまいます。 なぜでしょうか?詳しい方アドバイスお願い致します。
- ベストアンサー
- Visual Basic
- 別のSubで宣言されている変数を別のSubで参照
よろしくお願いいたします。 環境:Excel2003 以下のようなイメージで別Sub内で宣言された変数を同じ変数名で別のSub内で参照したいです。 Sub hoge() nn As Integer nn = 1 End Sub Sub hogehoge() MsgBox (nn) End Sub Sub hogehogehoge() Call hoge Call hogehoge End Sub エラーが発生する為、typeについて検索をかけてみました所、以下のような変数参照方法は出てきましたが、別のSubで宣言されている変数を同じ変数名で別のSub内で参照する方法はないでしょうか? Type PData hoge As String hogehoge As Long End Type Sub Sample1() Dim Pppp(5) As PData End Sub よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- EXCEL VBAのユーザーフォームに引数を渡す方法について
すいません、EXCEL VBAのユーザーフォームに引数を渡す方法についてご質問があります。 シート上にコマンドボタンを2つ用意する。 コマンドボタン1を押すと変数mは1 コマンドボタン2を押すと変数mは2 としてユーザーフォームを呼び出す。 Public m As Integer Private Sub CommandButton1_Click() m = 1 Call フォーム呼び出し(m) End Sub Private Sub CommandButton2_Click() m = 2 Call フォーム呼び出し(m) End Sub Sub フォーム呼び出し(m As Integer) UserForm1.Show End Sub 次にユーザフォームにコマンドボタンを1個置き、 ボタンを押したとき、mが1であれば「ボタン1」 mが2であれば「ボタン2」 とメッセージボックスを出し、ユーザーフォームを閉じる。 Private Sub CommandButton1_Click() If m = 1 Then MsgBox "ボタン2" ElseIf m = 2 Then MsgBox "ボタン2" End If Unload UserForm1 End Sub プロシージャ間の引数渡しは色々なテキストに載っているのですが ユーザーフォームに引数を渡す方法はどうも見つからず、 Private Sub CommandButton1_Click(m) としても、コンパイルエラーとなってしまいます。 よろしくご教示をお願いいたします。
- ベストアンサー
- オフィス系ソフト
- VBA 標準モジュールとフォーム (続き)
先ほど、同じ質問タイトルで質問させていただいたものです。この場合どうなりますか? モジュールでの変数file_nameをフォームのボタンをクリックしたら"text.xls"が表示されるようにしたいです。 (イメージとしては、エクセルのsheet1にコマンドボタンがあってクリックするとフォームが立ち上がってフォームのコマンドボタンをクリックすると"test.xls"が表示される) モジュール Private Sub CommandButton1_Click() ←エクセルsheet1にボタンがある dim file_name as string file_name="test.xls" UserForm1.Show End Sub フォーム(UserForm1) Sub CommandButton1_Click() ←フォームにボタンがある MsgBox file_name End Sub
- 締切済み
- その他(プログラミング・開発)
- VBAのプロシージャのことで
TEST1のプロシージャ内に使用している readfileという変数の中にテストという文字列を代入し、 文字列が代入された状態で Callによって別のプロシージャを読みにいったとき TEST(変数)に入った文字列ごと持っていくには どの様に記述すればよいかどなたか教えていただけませんでしょうか・・・。。 ----------------------------------------------------------- Sub TEST () Dim readfile As String readfile = "テスト" Call TEST2 End Sub ----------------------------------------------------------- Sub TEST2() readfile ←テストという文字列をTESTプロシージャから持ってきたい End Sub ----------------------------------------------------------- 単純に書いてみたコードですが、この様なことは可能なのでしょうか? すいませんがいただけないでしょうか><;
- ベストアンサー
- オフィス系ソフト
- WordでVBAの変数について
ThisDocumentにて宣言した変数内の数値をModule1の処理内で使用したいのですが ThisDocumentにてPublicで宣言した変数に数値を入れてModule1にてMsgboxを使用して確認した所参照できていませんでした Module1にてPublicで宣言した変数内の数値をModule2で参照することはできましたがThisDocumentだとうまくいきません Publicで宣言すれば別モジュールから参照できると認識しているのですが間違いでしょうか? プログラム等やったことがないので根本的な勘違いをしているかもしれませんがどなたかご教授ください。
- 締切済み
- オフィス系ソフト
お礼
お返事していなくて申し訳ありません。 お陰様で解決しました。 ご丁寧な回答に心から感謝します。