Excel VBA質問箱 IV

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

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


52411 / 76736 ←次へ | 前へ→

【29164】Re:シートに記録されているマクロをブックに記録されているマクロとするには?
発言  ichinose  - 05/9/27(火) 7:44 -

引用なし
パスワード
   ▼Orangbagsar さん:
おはようございます。

>シート1の2行目から11行目までのD列にチェックボックスを1〜10を配置し、各行のABC列にはテキストが入力されています。各チェックボックスをTrueにすると、その行のA〜C列の文字が赤字・取り消し線で表現されるよう、マクロが設定されています。このマクロはシート1のマクロとして記録されています。
>シート1での作業が完了したら、シート1をコピーしてシート2とし、シート2に対して作業を行います。以降、シート3、4と作業を繰り返します。この時、シート1に記録されているマクロはシート2にもコピーされますが、シートが増えるに従って、ファイルがものすごく重たくなってしまいます。
>マクロをブックに記録すればこの問題は解決すると推測していますが、
そうでしょうか?

シートコピーによる各シートモジュールのコードの増加が

>重たくなってしまいます

ではなく、沢山のコントロールが付いたシートのコピーそのものが
問題だと思いますが・・・・。
時間が無いので私の方で検証は出来ませんが、この点も再考慮してみて下さい。

因みにコードに関しては、
Thisworkbookのモジュールに

'===========================================
Private WithEvents chkbx As MSForms.CheckBox
'=============================================
Private Sub chkbx_Click()
  MsgBox "イベント発生" & chkbx.Value
End Sub
'==================================================================
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Set chkbx = Sh.OLEObjects("checkbox1").Object
'             各シートに貼り付けてあるチェックボックス
'            名前を指定しますが、ここではcheckbox1の例
End Sub

なんてすると出来そうですが、

小僧さんのリンクされた本家サイトの情報を考慮に入れると

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=28670;id=excel

安全性に欠けてしまいます。
こういうことを行うのに「コントロールツールボックス」のコントロールは
あまり向いていないのかもしれません。

よって、「フォーム」のコントロールの使用ということになるのでしょうが・・・。

冒頭の「コントロールが付いたシートのコピーそのものが問題」
だとすれば、どちらにしても別の話になってしまいますから、
まず、これの検討を行って下さい。

結果、フォームのコントロールを使用するならば、
方法はありそうですよ!!
0 hits

【29163】シートに記録されているマクロをブックに記録されているマクロとするには? Orangbagsar 05/9/27(火) 0:10 質問
【29164】Re:シートに記録されているマクロをブック... ichinose 05/9/27(火) 7:44 発言
【29326】シートに記録されているマクロをブックに記... Orangbagsar 05/10/1(土) 0:22 お礼

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