dポイントプレゼントキャンペーン実施中!

win98、Excel2000でVBAをいじっている者です。

質問です。
マクロにパラメータって渡せないものなのでしょうか。

よろしくお願い致します。

A 回答 (6件)

テストしてみましたが、マクロ名で引数を指定出来ないように思います。



変数 BookName を宣言セクションで宣言しておいて、事前にブック名を
代入しておき、

Public BookName As String

メニューの「ファイル1を開く」ボタンを押したとき、実行するマクロ名を
換えて(引数なしで)、そこから引数を付けて BookOpen を呼び出す方法で
どうでしょうか?
---------------------------
With Instmenu
.OnAction = "マクロ1"

---------------------------
Sub マクロ1()
BookOpen (BookName)
End Sub

こんな方法より気が付きません。
    • good
    • 0
この回答へのお礼

テストして頂いて有難うございます。
開くブックが複数あるのでどうしても引数が必要になってくるのです。現状では貴殿にアドバイス頂いたものは使うことはできませんが、関数に”皮をかぶせる”(?)ということは考えたことがなかったので今後の参考にさせて頂きます。
今回は有難うございました

お礼日時:2003/03/20 10:56

No3 ですが、なさりたいことの、内容が分からないまま書き込んでしまいました。

どうも違うみたいですので、取り消します。

この回答への補足

すいません。具体的に言うと、下記の感じでツールバーを動的に作ったのですが、

Dim Instmenu
'ツールバー「メニュー」作成
CommandBars.Add Name:="メニュー", _
Position:=msoBarTop, _
temporary:=True
CommandBars("メニュー").Visible = True
'マクロの追加
Set Instmenu = CommandBars("メニュー").Controls.Add
With Instmenu
.OnAction = "BookOpen"
.BeginGroup = True
.Caption = "ファイル1を開く"
.Style = msoButtonCaption
End With

OnActionプロパティでBookOpenにパラメータを渡すと、そんなマクロはないと怒られてしまいます。
因みにBookOpenはこのようになっています

Sub BookOpen(BookName As String)
'ブックを開く処理(引数:開くブック名)
'ユーザーフォームを隠す(再表示可)
UserForm1.Hide
'Excel表示有効にする
Application.Visible = True
'ブックを開く
Application.Workbooks.Open Filename:=ThisWorkbook.Path & "\" & BookName
Workbooks(BookName).Activate
'ブックの最大化
Book_Maximized
'ファイルへの変更無し(初期値)
ActiveWorkbook.Saved = True
 End Sub

確かにマクロに登録はされていないのですが、パラメータを渡さないようにするとマクロとして認識してくれるのですよ。

…なんかわからないことをつらつらと書きましたが、ご理解してくだされば幸いです。

補足日時:2003/03/19 10:23
    • good
    • 0

一番最初に実行されるSubモジュールに値を渡したいと言うことでしょうが、VBAはコンパイルしたモジュールにはならないし、モジュール名をキーボードから入力しないので、普通の、人間が場合に応じてプログラム名の後に続けて入れるパラメータは考えにくいです。


実行前に決めたセルに値をセットしてそれを使うと、パラメータ的に使えますし、またPublic、Static変数的にも使えます。
別モジュールに引数を渡すことなら、下記例はご参考になりませんでしょうか。
Sub test03()
a = 2
test021 (a)
End Sub
Sub test021(a)
MsgBox a
End Sub
test03を実行するとtest021に2が渡され、そこで「2」と表示されます。
    • good
    • 0
この回答へのお礼

アドバイスに感謝いたします。
申し訳ないのですが当質問に関係ない場所で使わせていただきました。
Subを使えば戻り値なしでOKなんですね。VBを中途半端に勉強しただけだったので勉強になりました。
今回は有難うございました。

お礼日時:2003/03/20 11:16

Excel VBA ですよね。



「プロシージャーに引数を渡したい」ということであれば、
Function プロシージャーに記述すれば、セルの値だけに限らず、
定数なども渡せると思います。

詳しくは、ヘルプで「Function ステートメント」を調べてみたら
よいでしょう。

具体的にどういうことをなさりたいのかを書いた方が、レスしやすいかも。
    • good
    • 0

マクロといっても関数で使える場合があります。



また、マクロの実行から行う場合は、セルの値によって処理するしかないでしょう。
ほか、実行するマクロを選択するのもいいと思います。
    • good
    • 0
この回答へのお礼

すごく興味深いアドバイスでしたので続きを少し待っていたのですが、これをヒントに自分で調べることにしました。
今回は有難うございました。

お礼日時:2003/03/20 11:20

> マクロにパラメータって渡せないものなのでしょうか。



(1) InputBoxを使用する。
(2) セルの値を利用する。
(3) INIファイルからパラメータを読み込む。

などの手段が考えられます。
    • good
    • 0
この回答へのお礼

アドバイスに感謝致します。
嫌味ではないのですが、難しい言葉が含まれていますので、そこまで勉強して出直してきます。また今回の事は今後の参考にさせていただきます。
今回は本当に有難うございました。

お礼日時:2003/03/20 11:26

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