Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2856 / 13646 ツリー ←次へ | 前へ→

【65567】コマンドボタンの共通Macro みーちゃんキャット 10/6/9(水) 21:28 質問[未読]
【65568】Re:コマンドボタンの共通Macro neptune 10/6/9(水) 21:35 発言[未読]
【65579】Re:コマンドボタンの共通Macro みーちゃんキャット 10/6/10(木) 19:37 お礼[未読]
【65570】Re:コマンドボタンの共通Macro ichinose 10/6/10(木) 6:04 発言[未読]
【65578】Re:コマンドボタンの共通Macro みーちゃんキャット 10/6/10(木) 19:02 お礼[未読]
【65580】Re:コマンドボタンの共通Macro ichinose 10/6/11(金) 0:20 発言[未読]

【65567】コマンドボタンの共通Macro
質問  みーちゃんキャット  - 10/6/9(水) 21:28 -

引用なし
パスワード
   sheet5枚に共通のSheetの保護Macroを標準モジュールに作ったんですが、
Sheet上にコマンドボタンを1個づつ置いていくと、5枚ともに
イベントプロシジャを作らなければ実行できないのでしょうか?

Sub Macro1()
  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _        Scenarios:=True 
End Sub
 
↓これを各Sheet全部に書かなければ実行できませんか?↓
Private Sub CommandButton1_Click()
  Macro1
End Sub

【65568】Re:コマンドボタンの共通Macro
発言  neptune  - 10/6/9(水) 21:35 -

引用なし
パスワード
   ▼みーちゃんキャット さん:
>sheet5枚に共通のSheetの保護Macroを標準モジュールに作ったんですが、
>Sheet上にコマンドボタンを1個づつ置いていくと、5枚ともに
>イベントプロシジャを作らなければ実行できないのでしょうか?
5つ程度なら全部書いた方が早いのは間違いないです。

どうしても纏めたいならサンプルを書いた事があるので貼っておきます。
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=53313;id=excel
難易度は高いです。

【65570】Re:コマンドボタンの共通Macro
発言  ichinose  - 10/6/10(木) 6:04 -

引用なし
パスワード
   おはようございます。

>Sub Macro1()
>  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _        >Scenarios:=True 
>End Sub

ボタンの種類を代えると、上記のコードだけでいけると思います。

コマンドバー「コントロールツールボックス」にあるコマンドボタンではなく、
コマンドバー「フォーム」にあるボタンを使う方法です
(オートシェイプの四角形を使ってボタンらしく加工するという方法もあります)。

これだと各シートのボタンに上記のMacro1を登録するだけで済みます。
試してみてください。

【65578】Re:コマンドボタンの共通Macro
お礼  みーちゃんキャット  - 10/6/10(木) 19:02 -

引用なし
パスワード
   こんばんわ。
お返事ありがとうございました。
すごく簡単に解決できてうれしかったです。
ところで、フォームとコントロールって何が違うのですか?
基本的な質問でごめんなさい。
ユーザーフォームのコントロールは勉強したので使えるのですが
こんなフォームがあったとは知らなかったです。
今後のために、ご教授ください。
初心者のわたしですが、今後もよろしくお願いします。


▼ichinose さん:
>おはようございます。
>
>>Sub Macro1()
>>  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _        >Scenarios:=True 
>>End Sub
>
>ボタンの種類を代えると、上記のコードだけでいけると思います。
>
>コマンドバー「コントロールツールボックス」にあるコマンドボタンではなく、
>コマンドバー「フォーム」にあるボタンを使う方法です
>(オートシェイプの四角形を使ってボタンらしく加工するという方法もあります)。
>
>これだと各シートのボタンに上記のMacro1を登録するだけで済みます。
>試してみてください。

【65579】Re:コマンドボタンの共通Macro
お礼  みーちゃんキャット  - 10/6/10(木) 19:37 -

引用なし
パスワード
   早速の回答ありがとうございました。またお返事が遅れ申し訳ありません。
わたしは何分初心者で、お書きの通り難易度は高く、Classというものを理解していないというのが本当のところです。
ですが、分かりづらい質問に答えて下さり、本当に感謝です。
質問はコマンドバー「フォーム」にあるボタンを使う方法により解決できました。
ありがとうございました。今後もご指導をお願いします。

▼neptune さん:
>▼みーちゃんキャット さん:
>>sheet5枚に共通のSheetの保護Macroを標準モジュールに作ったんですが、
>>Sheet上にコマンドボタンを1個づつ置いていくと、5枚ともに
>>イベントプロシジャを作らなければ実行できないのでしょうか?
>5つ程度なら全部書いた方が早いのは間違いないです。
>
>どうしても纏めたいならサンプルを書いた事があるので貼っておきます。
>ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=53313;id=excel
>難易度は高いです。

【65580】Re:コマンドボタンの共通Macro
発言  ichinose  - 10/6/11(金) 0:20 -

引用なし
パスワード
   こんばんは。


>ところで、フォームとコントロールって何が違うのですか?
オブジェクトの種類が違います。
コマンドバー「フォーム」のコントロールは、
Excel専用のコントロールでかなり以前から存在していたみたいですよ。
よって、イベントドリブンな仕様にはなっていません。
登録できるマクロは、一つでだけです。
また、機能も少ないので凝ったことはあまり出来ない とされています。
が、そのかわり、安定していて(Excelとの相性よい)不具合も少ないので
安心して使えます。

対して、コマンドバー「コントロールツールボックス」のコントロールは、
ユーザーフォームのそれと同じActiveXコントロールです。
(使用方法は、違いますが)。
イベントで処理を行うイベントドリブンな仕様になっています。
一つのコントロールにいくつかのマクロを関連付けさせることもできるため、
きめの細かい仕様が実現できます。
また、コントロール自体も多彩なプロパティを有しているので、
きれいな表示が可能です。
が、Excelとの相性があまりよくない問題もいくつかみうけられるようです。

一長一短ありますから、何度も検証して使い分けることが出来るようになることが
大事かと思います。

2856 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free