[[20060208135145]] 『VBA 作業中のシートの名前で分岐させたい』(ちょっかく) ページの最後に飛ぶ

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

 

『VBA 作業中のシートの名前で分岐させたい』(ちょっかく)

ABC1, ABC2, ABC3, XYZ1, XYZ2, XYZ3 というシートがあって、それぞれにボタンを押して
実行させるマクロを作ります。
他に、s1, s2のシートがあります。

マクロでやらせることはほとんど同じなのですが、ABCxでマクロを実行する時はs1のデータを引用し、XYZxでマクロを実行するときはs2のデータを引用します。

マクロを2つ作ればやりたいことはできますが、マクロの中で自身が実行されたシートを判断して引用するシートを切り替えれば1つのマクロで済ませられます。

マクロで、作業中のシートの名前がABCxなのかXYZxなのかを判断させるにはどうしたらよいのでしょうか。

よろしくお願いします。


 >ABC1, ABC2, ABC3, XYZ1, XYZ2, XYZ3 というシートがあって、それぞれにボタンを押して
実行させるマクロを作ります。

 activesheet.name または me.name で取得できます。(seiya)

教えていただきありがとうございます。
以下のように書くことはできました。

If ActiveSheet.Name = "ABC1" Or ActiveSheet.Name = "ABC2" Or ActiveSheet.Name = "ABC3" Then

シートの数だけOrでつなげるのもなんなので良い方法はないでしょうか。

"ABC*"ではだめだし、"ABC" & * や "ABC" & "*" ではエラーになってしまいました。


 Like演算子を使ってみては?
 If ActiveSheet.Name Like "ABC?" Then
 (やっちん)

 それより、サブルーチンに引数として渡してしまったほうが早いのでは?(seiya)

 ボタンに登録しているマクロがばらばらならそうですね。
 おっと、最初から2つ作ればの話に戻ってしまいますね。
 ボタンはフォームのボタンなのでしょうか?
 (やっちん)

Like演算子!?(初めて知りました)

こうゆう演算子があるんですね。=を使ってるときは*も?もエラーになるし、どうすればいいんだょ〜って嘆いていましたが、それなりに納得してマクロを書けそうです。

サブルーチンは・・・すいません。イメージができません。> seiya様

難しい内容になってきていてよくわからない・・・
ボタンはフォームのボタンを使ってます。

ここで質問してよかったです。ありがとうございました。(ちょっかく)


 Like演算子で解決してよかったですね。
 引数としてシート名を渡すようにするには、コードを見てみないと
 そのまま使用できるかどうかわかりませんので.... (seiya)

 ボタンが何かと聞いたのは
 フォームのボタンであれば、どのボタンでも同じマクロを登録できます。
 ところが、コントロールツールボックスのボタンはボタン毎にマクロがばらばらです。
 こちらのボタンを使うのであれば、共通のマクロを別に作ってそれぞれのボタンのマクロから呼び出すやり方になるでしょう。
 サブルーチンの話が出たので、どちらのボタンかな?という確認でした。
 (やっちん)


コメント返信:

[ 一覧(最新更新順) ]


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