|
▼VBWASURETA さん:
>>行挿入イベントがあればそこで処理してしまえば良いのですが、該当イベントは見つける事ができませんでした。
>シートオブジェクトにあるイベントでできると思いますが。
>Changeイベント、Selectイベント等
行列挿入時Changeイベントが発生しないのはExcel全般の仕様だと思っていたのですが、2003と2007ではChangeイベントが発生するようですね。
調査不足で申し訳ないです。
>まず、ぱっと見に重要性が全然見えません。
>連番にこだわる理由があるのでしょうか?
>連番だけでそんなに時間をかけてするものでもないでしょうし。
マクロの実行時間より、連番が常にあっていることが重要な作業なのです。
運用で逃げれたら良いのですが。
▼Jaka さん:
>Calculateイベント利用する方法です。
>関数が入ったセルが消されたら都度書き込む所も同じです。
やっぱりCalculateイベントですか。
イベントの動作はバージョン依存しないと思い込んでいたので、Changeイベントのこともあるしテストが大変そうです。あまりバージョン分けのコードは書きたくなかったのですが、Excel97と2000依存コードの悪夢が再び...
▼ハチ さん:
>たぶん、JuJuさんが質問されているのは、
>「行の挿入を検知できるか?」ということだと思います。
>連番を振るところは、おまけです。
しかも数式使用不可というなんだかよくわからないソフトを作っています。
>再計算のイベントを検知する以外の方法で、
>なにか案がありますか?
2000だと再計算イベントが有力のようですね。
仕様で保存したブックに数式は使えないので、
1. ファイルを開いたときに、所定のセルを数式に置き換える。
(行列挿入時に値が変化する式がないとCalculateイベントが発生しないため)
2. 行列挿入時の処理はCalculateイベントを使う。
3. 保存するときに数式を値に戻す。
という処理になりそうです。
Excel97,2000を対応から外して良いか検討してみます。
97ユーザはほとんどいませんが2000ユーザは根強く残っているので、難しそうです。
|
|