[[20071207180112]] 『マクロボタン』(maco) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロボタン』(maco)
  6個のマクロボタンがあり、それぞれ1課〜6課までの実績を集計するようになっています。
 メンテ等の関係から分けています。
これとは別に6個のマクロをイッキに動かすマクロボタンを1つ作成したいのです。
 (説明下手でスミマセンm(__)m)
 元のマクロを繋いでボタンに登録するしかないでしょうか?
 教えて下さい。

 Sub まとめて()
 Call 1課のマクロ
 Call 2課のマクロ
 Call 3課のマクロ
 Call 4課のマクロ
 Call 5課のマクロ
 Call 6課のマクロ
 End Sub
 というふうにまとめてはいかが?
 (ROUGE)

ROUGE様
お返事がおそくなり、ごめんなさいm(__)m
 ありがとうございます。Callでまとめ、希望どおり出来ました。(maco)
 そこで教えて頂きたいことがあります。
 自分なりに…自動記録でボタンをクリックする作業を登録すると下記のようになりました。(@=1課のマクロです)
 初心者で恐縮なのですが、CallとApplication.Runとの違いを教えて下さい。
 単純に疑問がでてしまいました。

 Application.Run "'課別.xls'!@"
 Application.Run "'課別.xls'!A"
 Application.Run "'課別.xls'!B"
 Application.Run "'課別.xls'!C"
 Application.Run "'課別.xls'!D"
 Application.Run "'課別.xls'!E"


 こういう風に書けるってところかな?
 For i = 1 To 6
    Application.Run "'課別.xls'!" & i
 Next

 もうひとつ、ブック名をフルパスで書いておくと、
 ファイルが開いてなくても、自動で開いて実行してくれる。
 (開いている時と、開いていない時の書き方が違うので
  事前にチェックが必要。)
 BJ


 こんな違いもあります。

 ヘルプにも書いてありますが、Run メソッドはオブジェクトを引数として渡すことができません。
 ↓を新規モジュールに貼り付けて、初めにtest_call、次にtest_run を実行させてみてください。
 一方は a と b の値両方が表示されますが、他方は b の値しか表示されません。
 a が引数として渡されていないということです。

 Sub sample(a, b)
    a = "サンプル:a"
 End Sub

 Sub test_call()
    Dim a As String
    Dim b As String
    b = "サンプル:b"
    Call sample(a, b)
    MsgBox a & vbCrLf & b
 End Sub

 Sub test_run()
    Dim a As String
    Dim b As String
    b = "サンプル:b"
    Application.Run "Book1!sample", a, b
    MsgBox a & vbCrLf & b
 End Sub

 (1or8)

BJ様、1or8様
 早速のご回答ありがとうございます。
 実際にやってみました。納得です。
 深いとこは何も分かっていないので
 作業効率、目的を踏まえ勉強します。
 最初は繋がないとまとめて動かせないのか、という固い発想が
 皆さんのお陰で解れましたm(__)m
 本当にありがとうございました。(maco)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.