ブック内の全シートについて印刷時のヘッダをシート名にするVBAを実行したときのこと。このとき、該当シートをSelectしないようにしていたのだが、Excelシート上のオートシェイプがシートによってはずれていたのだ。

細かい調査はできていないが、もしかしたら表示している倍率やらの影響も受けるのかも知れない。また、オートシェイプの種類によってもずれ方が違っていたようである。例えば単にずれただけのものと、拡大されていたものと。もしかするとそれぞれんよって拡大の比率が違ったのかも知れない。

 

印刷時のヘッダをシート名にする際に、該当シートをSelectするようにすれば問題は解決した。

2003でも同じコトガあったかな?ちょっとド忘れしてしまっているが、本来影響を受けないであろう部分に影響が出ているのは有難くない。

 

しかし、で文句を言うより、処理対象のシートはSelectする、という回避方法を使った方がよいだろう。


この記事の内容は少々難しいので読み飛ばしてもよいです。


実際にクラスモジュールで構成される言語の、Javaなどを利用している人なら理解できる話だと思う。


VBAのクラスモジュールではオーバーロードができない。

オーバーロードとは、同じプロシージャ名やファンクション名でも、引数の型や数が異なるなら別物として定義できるものである。


VBAのクラスモジュールの制限事項である。







※書き直し /八月末削除予定 /クラス

規約がなぜ必要なのか?


理由はいろいろある。

・メンテナンスを容易にするため。

・共通部品を切り出しやすくするため。

・工数見積もりをしやすくするため。

など、規約がなく好き勝手されるとこうはいかないのだ。


いままではこのレベルだったであろう。


いまやソフトウェアは様々な分野で利用されている。それゆえ、社会に与える影響も大きくなってきている。

先日はエレベータの制御ソフトの問題が出て、死亡事故との関連が調査されている。また、生命保険会社のソフトミスにより支払額が過少であったなどという事件もある。ソフトウェアのミスにより人命を危険にさらしたり社会的信用を失墜させることは当たり前のように起こっているのである。

つまり、品質の高いソフトウェア開発の責任や重要性は社会的要請としてある、ということになる。

世間では内部統制や説明責任という言葉がよく飛び交うようになった。もう社会的インフラの一部であるソフトウェア開発の規約作りは、内部統制や説明責任を果たすための基本の第一歩である。


もちろん、規約を「作った」だけではいけない。定義したら遵守させ、更にもっとよいものがないか探っていく必要もある。

なんだ、簡単じゃないか、と思われるだろう。実は世間で言われているCMMIだとかも、基本はそういうところなのである。本来簡単なことなのだ。

しかし、定義が陳腐化したり、規約の必要性を理解せず勝手なコードを作ってそれをレビューする場もなかったりと、現実はなかなかそうはいっていないのである。


生業としてソフトウェアを開発する人には、是非理解して欲しい部分である。