○第55回目 ちょっとした工夫、サブルーチン化
いろいろマクロを作りましたので、ショートカットで動くものはいいのですが、その実行が、Alt+F8から該当のマクロを選択し実行となると、後ろにあるものは、該当のものにたどり着くまで大変になってきます。手間がかかり、面倒臭くなってきます。
ショートカットも限られているのでなんとならないのか、という対応です。
対応はシンプルです。
各マクロをサブルーチン化した親マクロを作り、その中で作業区分を入力するようにすれば、ショートカットキーは最初の親マクロを呼び出すだけですみます。後は画面で、動かしたい処理の番号を入力すればいいことになります。
今まで紹介したマクロのように、他と独立したもの(変数の受け渡しがない)をサブルーチン化するのはとても簡単です。
ここでマクロを特定するのは、Sub文の後のマクロ名です。
Sub 親マクロ()
dim kubun
'処理区分の入力。
kubun = InputBox("処理区分を入れてください。" & _
"1=⇒子マクロ01の処理" & vbCrLf & _
"2=⇒子マクロ02の処理" & vbCrLf & _
"3=⇒子マクロ03の処理" & vbCrLf & _
"5=⇒子マクロ05の処理" & vbCrLf & _
"9=⇒子マクロ09の処理" ", xpos:=2000, ypos:=3000, Default:=1)
'-------------------------------------------------------------------------
'-------------------------------------------------------------------------
Select Case kubun
'子マクロ01の処理
Case "1"
子マクロ01 'マクロ名を指定します
'子マクロ02の処理
Case "2"
子マクロ02
'子マクロ03の処理
Case "3"
子マクロ03
'子マクロ05の処理
Case "5"
子マクロ05
'子マクロ05の処理
Case "9"
子マクロ05
Case Else
Exit Sub
End Select
End Sub
上記のように、Case文の次の行に、マクロの名前を書けばいいのです。
変数はそれぞれのマクロで定義しているのでそれが使われます、改めて気にする必要はありません。
こうすれば、親マクロにショートカットキーをあてがっておけばいいことになります。
vbCrLf は、メッセージボックス内の改行を表しています。ですから、各選択肢は、1行単位で表示されることになります。余り多いとメッセージボックスに表示できない場合があるようです。
メッセージボックスでの表示の感じは、マクロを全部作らなくても、上記の例で言えば、"Select Case kubun"文の前の行に、exit Sub文を入れれば、簡単にわかります。試してみてください。
※それぞれのマクロで、実行前のセル等の指定の仕方が異なる可能性が高いので、マニュアルを作るなりして間違えないようにしてください。
第47回からはじめた、"ちょっとした小物"をまとめて、サブルーチン化するのもいいのではないでしょうか。

0 件のコメント:
コメントを投稿