VBA技術解説
文字列としてのプロシージャー名を起動する方法(Run,OnTime)

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
公開日:2015-03-18 最終更新日:2015-04-16

文字列としてのプロシージャー名を起動する方法(Run,OnTime)


文字列変数の中にプロシージャー名が入っていて、そのプロシージャーを起動したい場合になります、
実際には、そのような構造が良いとは思えませんが、知っていればプログラミングの幅が広がります。


使うのは、OnTimeメソッド or Runメソッドになります。
それぞれのメソッドについては以下を参照してください。
第120回.OnTimeメソッド
・OnTimeメソッドの構文 ・OnTimeメソッドの使用例 ・OnTimeメソッドの実践例
第127回.他のブックのマクロを実行(Runメソッド)
・Application.Runメソッド ・Application.Runの使用例 ・Application.Runの必要性


Runメソッド
Application.Run "subProc"


本来は、他のブックのプロシージャーを起動する場合に使う事が普通なのですが、
当然ながら、自身内のプロシージャーも起動できます。
引数を指定する場合は、

Application.Run "subProc", "引数1", "引数2"


このようになります。



OnTimeメソッド
Application.OnTime Now(), "subProc"


引数が必要な場合は、指定方法が少し面倒です。

Application.OnTime Now(), "'subProc ""引数1""'"
Application.OnTime Now(), "'subProc ""引数1"",""引数2""'"


全体を'(シングルクォーテーション、アポストロフィ)で囲み、
引数を""(ダブルクォーテーション2つ、"の中に"を入れる場合は2連続にします)で囲みます。
複数の引数は、,(カンマ)で区切ります。


また、実務的には、
Application.OnTime Now() + TimeSerial(0, 0, 0)
としておくと、後でメンテしやすい場合あるかと思います。
少し時間差で起動させたくなったら、
Application.OnTime Now() + TimeSerial(0, 0, 1)
というように出来ますので。

この引数の指定方法は、
Application.Run
でも同様の指定が可能です。
Application.Run "'subProc ""引数1""'"
Application.Run "'subProc ""引数1"",""引数2""'"


さらに、
OnActionプロパティ(CommandBarやShape)
でも、引数を指定する場合は同様の指定になります。




同じテーマ「マクロVBA技術解説」の記事

文字列でのセル参照と文字列の計算式について(Evaluate,INDIRECT)

セルまたはセル範囲を表す文字列からセル参照する場合と、文字列としての計算式から計算する場合です。"Sheet1"の A1に、"Sheet2" B1に、"A1" "Sheet2"の A1に、"(2+3)*2" このよう…
リボンを非表示、2003以前ならメニューを非表示
Excel2007以降のリボンは幅を取られて邪魔な場合があります、特に業務アプリの場合は、リボンを消したい事も多いと思います。リボンを消すだけなら、消えているリボンを表示する場合は、Application.ExecuteExcel4Macro"SHOW.TOOLBAR(""Ribbon…
印刷ページ設定の余白をセンチで指定する(CentimetersToPoints)
印刷のページ設定の余白サイズは、自動記録ではApplication.InchesToPointsで記録されます、しかし、ページ設定のダイアログ画面ではセンチで指定しているので、どうもしっくりしません。できれば、余白サイズはセンチで指定したいものです。
文字列としてのプロシージャー名を起動する方法(Run,OnTime)
ドキュメントの作成者を取得(GetObject,BuiltinDocumentProperties)
エクスプローラーで表示される作成者を取得したいとの問い合わせを受けたので改めて確認をしました、所有者と混同されがちですが全く別のものになります、DOSのDIRで表示できるものは所有者になります。従ってVBAでShell.Applicationで作成者を取得すると書かれているものは全て勘違いをしています。
画像サイズ(横x縦)の取得について
・LoadPictur 関数 ・AddPictureしてから取得 ・APIを使用
文字種(ひらがな、全半角カタカナ、半角英大文字等々)の判定
マクロVBAで、文字の種類を判定する具体的なコードになります、書き方はいろいろありますし、なにより、文字を何の種類に入れるかは決まりがありません。カタカナって、どこからどこまで、カナ記号は含むの このような細部については、使用する時々に合わせて微調整が必要になります。
オブジェクトとプロパティの真実
オブジェクトとプロパティについて、解説をします。対象は、VBA中級以上になると思いますが、初級の方でも、VBAって奥が深いんだなーと感動位は出来ると思います。(笑) ただし、あまり役には立たないかもしれませんので、あしからず。
オブジェクト式について
・オブジェクト式の書き方 ・オブジェクトは直接指定できない ・オブジェクト式の書き始めは何か ・メソッドとプロパティの違いについて ・オブジェクト式の最後に
オブジェクトの探索方法(オートシェイプのTextを探して)
・オブジェクト探索の説明で使う例題 ・自動記録を使ってオートシェイプの概要を知る ・ローカルウィンドウでオートシェイプのテキストを調べる ・オートシェイプの位置移動について ・VBAを完成させる ・オブジェクトブラウザーを使いさらにオブジェクトを調べる ・ウォッチウィンドウについて
条件付きコンパイル(32ビット64ビットの互換性)
条件付きコンパイルは、VBAの特定のコードブロックを選択してコンパイルします、VBAの他の部分は無視されます、条件付きコンパイルステートメントは、実行時ではなくコンパイル時に実行されます。条件に基づいてコンパイルするコードのブロックを指定するには #If...Then...#Elseディレクティブを使用します。


新着記事NEW ・・・新着記事一覧を見る

ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ