• ベストアンサー

マクロAAAの変数をマクロBBBで使いたい

 マクロAAAの変数をマクロBBBで使いたいのですが Sub AAA() Dim xx xx = 15 Call BBB End Sub Sub BBB() マクロAAAの xx で処理作業 End Sub マクロAAAの xx は色々変化します。   このようなときどのようにすればよいのか   お教えください宜しくお願いします。

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

  • ベストアンサー
  • nurorin
  • ベストアンサー率40% (10/25)
回答No.1

プロシージャ内の変数を別のプロシージャから利用することはできませんので、以下のどちらかの方法をとります。 (1)引数に割り当てる Sub AAA() Dim xx xx = 15 Call BBB(xx) End Sub Sub BBB(xx) xx で処理作業 End Sub (2)モジュールレベルで変数を宣言する Dim xx Sub AAA() xx = 15 Call BBB End Sub Sub BBB() xx で処理作業 End Sub 参考: http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_050.html

yama0192
質問者

お礼

 早速の回答ありがとうございます。  どこかで見たことがあったのですが思い出せなくて  質問させていただきました。  おかげで無事希望どうりになりました。   ありがとうございました。

関連するQ&A

  • Application.OnTime Nowの変数

    他のプロシージャに1秒後に変数を渡すテストをしました。 Sub test01() Dim ws As Worksheet Set ws = ActiveSheet Application.Wait Now + TimeValue("0:00:01") Call AAA(ws) 'ただしく渡される End Sub Sub test02() Dim ws As Worksheet Set ws = ActiveSheet Application.OnTime Now + TimeValue("00:00:01"), "AAA(" & ws & ")" 'エラー End Sub Sub AAA(ByVal ws As Worksheet) MsgBox ws.Name End Sub Application.OnTime を使ったほうがエラーになるのはなぜでしょうか? どうやれば正しく渡せるうのでしょうか?

  • vb.net変数に入れた文字列でメソッドを実行する

    こんにちわ!! Vb.netで文字列を格納した変数を使ってメソッドを呼び出したいのですが、可能でしょうか? サンプル 'メインルーチン public sub test() Dim aaa as string ="testfunction" Dim num as integer=0 '↓の様にメソッドを呼び出したい Dim bbb = aaa(num) Msgbox(bbb ,vbinformation) aaa="testfunction2" bbb=aaa(num) Msgbox(bbb,vbinformation) Endsub 'メソッド1 Private function testfunction1(num) Return num+1 End function 'メソッド2 Private function testfunction2(num) Return num+2 End function 上記はあくまでサンプルです。 実際はメソッド数が多く、aaaにいれる名前も別で取得するので、stringになります。 ですので、bbb=aaaはforで回します。 このようなことは可能でしょうか? やりかたもしくは解決方法があればお願いします。

  • グローバル変数を使いたいのですが。【Ruby】

    #!/usr/bin/ruby -Ke (略) $hoge = input["hoge"] def aaa() (略) end def bbb() (略) end if input["hoge"] aaa() end bbb() このように関数bbbでhtmlのフォームの値hogeを利用して 関数aaaを実行させるプログラムですが、 関数bbbで使用した変数の値をaaaでも利用したいのですが、 よい方法はあるのでしょうか? グローバル変数を$hoge = input["hoge"]の後で $hoge=[]と定義すると、初期化されてしまい、 関数bbbの中でグローバル変数を定義しても駄目でした。

  • 繰り返しのマクロで変数について

    Sheets("東京").Select Dim i x = Sheets("東京").Range("X1").Value For i = 1 To x 処理内容です Next i Sheets("千葉").Select Dim j x = Sheets("千葉").Range("X1").Value For j = 1 To x 処理内容です Next j このようなマクロを作っています 作業対象シートが複数ありまして (この例で言うと「東京」シートと 「千葉」シート) それらのシートに対してのマクロを まとめて記述したいのですが 同一マクロでは変数が同じものは使えないため わざわざ変数を複数使っています 「i.j」のように。 今後作業対象シートが増えていくたびに どんどんマクロが長くなっていくので うまく記述する方法はありませんでしょうか? 「処理内容です」の部分は まったく同じ内容です (変数以外) 宜しくお願い致します

  • VBAにおいて、""内で変数を使用したい

    VBAにおいて、""内で変数を使用したい 0864_001.xls 0864_002.xls … 0864_009.xls というファイルがあるとき、0864_001.xlsを開く→処理→閉じる→0864_002.xlsを開く→… というように処理をしたいと思い、以下のようなマクロを作成しました。 Sub Test() Dim i As Integer For i = 1 To 9 Workbooks.Open ThisWorkbook.Path & "\0864_00i.xls" 処理 閉じる Next i End Sub 実行しようとしてもファイルを開くことが出来ずに困っています。 ""内で変数を使うことは出来ないのでしょうか? また、どのようにすれば実行できるようになるのか教えてください。

  • マクロでの次の実行マクロへの記述

    下記のマクロを記述しました。 一つのマクロ処理を終わらせて、次のマクロ(例:test)を動かしたいのですが何処に 記述したら良いかわかりません。 教えてください。 Sub Macro1() Dim i As Integer Dim buff As String i = 2 While 1 If Range("B" & i).Value = "" Then End End If buff = Range("B" & i).Value Range("B" & i).Value = Left(buff, 7) + " " + Mid(buff, 8, 5) + " " + Right(buff, 6) i = i + 1 Wend   Call test →ここに仮に記述したのですが、testのマクロに行きません。 End Sub 以上

  • 【VB.NET】複数のサブルーチンをすべて一気に抜ける方法?

    【VB.NET】複数のサブルーチンをすべて一気に抜ける方法?  今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  環境:Vista+VB2008 でございます。 例えば下のようなコードがあったといたしまして、  Sub AAA    Call BBB  End Sub  Sub BBB    Call CCC  End Sub  Sub CCC    '★  End Sub 特定の条件の時のみ、★マークのところで、動作を終了したい (Sub AAAのEnd Subに移動したい)場合、どのようにすべきでございましょうか?? Exit SubだとSub CCCしか抜けてくれませんし(Sub BBBから実行を続行してしまう)、 フラグ立てだと  Public フラグ as string =""  Sub AAA    Call BBB    If フラグ = "抜ける" then Exit Sub     End Sub  Sub BBB    Call CCC    If フラグ = "抜ける" then Exit Sub     End Sub  Sub CCC    If (抜けたい時)then     フラグ = "抜ける"     Exit Sub    End If     End Sub のように、コードが少し見にくくなってしまいます。。。 何か他のスマートな方法などございましたら、是非ともご紹介いただきたくお願いいたします。 もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

  • c++のグローバル変数

    お世話になります c++のグローバル変数の使い方を教えていただけないでしょうか Visual Studio 2008を使用しております ------------abc.cpp------------- int AAA; BBB(){ AAA = 1; } abc::CCC(){ AAA = 2; } コンパイル(ビルド)ではエラーは出ないのですが、 BBBをコールした時は変数AAAに値をセットできるのですが、 abc::CCCをコールした時、AAAに値がセットできません、 ウォッチ等も「エラー:識別子'AAA'はスコープ外です」 となってしまいます。 補足 BBBはリンクしているライブラリ(修正不可)からコールされる為、 クラスに組み込む事が出来ません。

  • C言語グローバル変数

    C言語で、 aaa.c にglobal変数 gTest[2]; を書いて、 別のbbbb.cからgTest[0]の値を参照するにはどうしたらよいでしょうか? aaa.cとbbb.cは異なる機能なので、 bbb.cからgTest[0] の値を直接編集させたくありません。 aaa.hに gTest[2];を書くしかないのでしょうか? aaa.hに gTest[0]の値を取得するマクロを定義してbbb.cにはそのマクロを使ってもらいたいのですが、可能でしょうか?

  • Callで呼び出したプロシージャから変数を持ち帰るには

    Private Sub test1() Dim x, y x = 1 y = 2 Call test2(x, y) '* End Sub Private Sub test2(x, y) Dim z z = x + y End Sub 上記のようなコードで、*の部分でtest2のx+yの結果が格納された状態の変数zを使うにはどうすればいいですか?