プロが教える店舗&オフィスのセキュリティ対策術

RunMacroメソッドはvbaのsubプロシージャーのマクロ1を呼び出すことはできないのでしょうか?
DoCmd.RunMacro "マクロ1", 2
とするとエラーになってしまいます。
どうしても2回マクロを実行したい場合は
Call マクロ1
Call マクロ1
とするしかないですか?

A 回答 (2件)

Excelの場合は「マクロ=モジュール(VBA)」ですが、


Accessの場合は「マクロ」と「モジュール」は別物になります。

で、ご質問の「RunMacro」は、データベースウィンドウ
(=テーブルやクエリなどの一覧が表示される画面)で、
『マクロ』選択時に表示されるもの(「マクロ」オブジェクト)を
実行する際に使用するメソッドです。

ですので、「マクロ1」がSubプロシージャの実行には
使用できません。
(実行すると、マクロオブジェクトから「マクロ1」を探すものの、
 見つからないのでエラーを返す、と)

Subプロシージャを指定回数実行する場合は、例えば
以下のように、「For Next」構文などを使用します。


'フォーム上の「コマンド1」ボタンのクリック時イベント
Private Sub コマンド1_Click()

  '回数カウント用の変数を宣言
  Dim i As Integer

  '「i」が「1」から「2」になるまで(=2回)反復
  For i = 1 To 2
    Call マクロ1
  Next

End Sub

・・・以上です。


~~~~~~~~~~~~~~~~~~~~~~~~~~

hana-hana3さんへ:
RunMacroメソッド及び「マクロの実行」アクションでも
実行回数の指定は可能ですので、参考まで:
(下記サイトはAcc2007のヘルプですが、この辺りはAcc97から
 仕様変更はなかったはずです:それ以前は使用経験なし)
http://office.microsoft.com/ja-jp/access/HA01226 …
    • good
    • 0
この回答へのお礼

「マクロ」と「モジュール」は別なのですね。
ご回答ありがとうございます。

お礼日時:2009/05/29 20:36

RunMacroでは実行回数を指定する事はできません。


ヘルプにもそのような指定方法は書かれていないと思いますが?
    • good
    • 0
この回答へのお礼

確認してみます。ご回答ありがとうございます。

お礼日時:2009/05/29 20:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!