[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『疑問』(???)
Workbook_Open()とAuto_Open()どちらを使う方が良いのですか?
理由はあるのですか?、それとも好みの問題かなあー
< 使用 Excel:Excel2013、使用 OS:Windows7 >
ブックが、マクロによって開かれる場合、Auto_Openは実行されません。 Workbook_Openは、操作でひらかれてもマクロで開かれても実行されます。 Workbook_Open のほうは、オブジェクトモジュールに書かれ、マクロからのイベント制御が可能です。 マクロから開いても実行されると書きましたが、開く側で、開く前に イベント発生を抑止してやれば 実行をとめることもできます。
Auto_Openは古き良き(?)昭和、Workbook_Openは比較的新しい平成?。 まぁ、好みといえば好みですかね。βは、基本、Workbook_Openしか使いません。
Workbook_OPen Auto_Open といれて検索すると、この学校内の
http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040817.html
も含めてたくさんヒットしますから、参考にしてお好きなほうを。
(β) 2015/07/24(金) 14:30
私は古風な方なので、いつもAuto_Openの方を使っていますね。
(???) 2015/07/24(金) 18:05
私がVBAの掲示板に参加し始めの頃、Auto_OpenとWorkbook_BeforeCloseという組合せを推奨している カリスマ回答者がいました。
プログラム構造としては、歪なので質問したところ(質問というより、反論だったかも知れません)、 要約すると以下のような回答投稿を返されました。
Auto_Closeではなく、Workbook_BeforeCloseの選択に関しては、
Workbook_BeforeCloseは、イベント内でクローズを中止することが出来る(Cancel=True)が、Auto_Closeはできない
Workbook_Openではなく、Auto_Openの選択に関しては、 ・Workbook_Openには、バグある ・Auto_Openだと
sub auto_open(optional flg as long=0) if flg=0 then msgbox "単独では作動しません" else '通常処理 end if end sub
こんな使い方ができる という理由から、この組合せを使っているという趣旨の投稿がありました。
当時は、この投稿に結構納得して、この時からしばらくは、私は Auto_Open派だと言い張っていたと思います。
「Workbook_Openにはバグある」このバグには、残念なことに今まで一度も遭遇したことがありません。
今にして思えば↑これがそうだったのかな と思います(このスレッドでは、Auto_Openだったか Workbook_Openだったか不明と記述していますが、Workbook_Openでした)が、定かではありません。
カリスマ回答者に「どんなバグですか?」と、どうして聞かなかったのかなあ? 告白することなく通り過ぎて行ったあの子を思う思いです(なんのこっちゃ)!!
その後、このバグは Excel97の時にあったバグという話題も目にした記憶があります。 だとしたら、Excel2000からのVBAの私には、わからない話ですが。
Excel2002からは、原則、Workbook_Open、Workbook_BeforeCloseで統一しています。
が、Auto_Open(Optional flg as long=0) このような使い方があることを覚えておくと、 何かに役に立つことがあるかもしれませんので、歴史的な経緯を調べることも意味があると思います。
(ichinose@暑いですねえ) 2015/07/26(日) 16:36
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.