最近、厚生労働大臣が女性を「子供を産む機械」と表現したとかで、野党の女性議員を先頭に辞めろ、大臣不適格だと抗議の声が吹き荒れ、そして得意の「任命責任」を持ち出して安倍総理にも攻撃が飛び火している。

どちらにしても不謹慎な例えだったが、「産む機械だ」と決め付けた言い方をしたわけではないのだからそれほど怒らなくてもと思うのですがどうでしょう?野党は内閣を攻撃する材料にするため「女性は子供を産む機械」と言った言ったと世間を煽っている感じで、前後の言葉も聞いたら本当にそんな風に考えているとは思えないんですけどね(私の読解力が不足しているのか?)。

もっと政治の本質として、「そんな考えだから、少子化対策のこの点が足りないんだ」とか「対策が不十分と思うのだが、あなたの考えが反映されているのか」とか政治家として対決して欲しいものです。

しまいには「機械というなら、子供を産まない、産めない女性は欠陥品か!」とそんなこと言っていないのに勝手にエスカレートさせて、もうそういうヒステリックな姿も見苦しいので、柳沢大臣にはとっとと辞任してもらうか、野党は国会の審議に戻ってそこできちんと批判するかしてもらいたい。いつまでもヤッてんなよ!

と、そんなことを思っていた昨日、PC21誌の表計算大会「マクロ問題」に応募した私の作品が欠陥品であることが判明した。

請求書の空白行を表示しないようにする、という問題で、1行づつ空白行かどうか確認して最後に一括非表示処理をする方法にした。

入力範囲でSpecialCellsのTypeをxlCellTypeBlanksで空白セルを取得してEntireRow.Hidden=Trueとすれば一発で非表示にできるのだが、これじゃぁツマランし、行の一部だけ入力があった場合(1行5列のうち4列目だけ入力があるとか)対応できない。

で、入力範囲を一行ずつすべてのセルが空白かどうか調べ、すべて空白であればその行ナンバーを変数に取得し、最後に一括処理するようにした。その都度処理してもよいのだが、それだといちいちObjectを操作することになり多少もたつき感があるので最後にまとめて処理するようにしたのだ。

問題のクリアを考えればSpecialCellsを使えばいいし、処理のもたつきも今の高性能機なら気にするほどではないので、その都度処理してもよかった(私のマシンの性能が低いだけだから)。でも、どうせならと些細なことにこだわってみた。正解にはなるんでねぇ、と割と自信を持って送ったのがつい4日ほど前。

そして先日書いたように友人のエクセル・ファイルを作ってあげることになり、要望が「印刷する時に何も入力の無いところは隠れるようにしてくれ」、という正にマクロ問題と同じものだった。

「ラッキー!応募したやつをチョッと手直しすればすぐできる」と、同じ方法で作った。「これでよし!」。ただ、こちらは他に入力行の追加というのもあり、それに伴って合計式の参照範囲の書き換えなど、そのためのテストを繰り返していた。

テストのために参照範囲すべてにデータを入力して正しく計算されるか確認。

計算はちゃんとされるようだ。当たり前だな、そうなるように作ったんだから。と思いつつ、ワークシートを見てみるとこの状態では非表示にする行が無いことに気づいた。応募作もそうだが、現在の表示状態によってコマンドボタンで全行表示・非表示を切り替えるようにしてある。ので、非表示にする行が無い場合はボタンを押す必要が無いのだが、押す可能性は充分にある。

「あら〜、どうなるんだ?」と思いながら押してみた。

エラーーーーーーーー??
ガ〜〜〜〜〜〜〜ンッ!!

なんという初歩的ミス。非表示処理する行がないと変数の中は空っぽなので、処理対象が見つからずにエラーとなってしまう。当然マクロ問題に応募したものも同様のテストをされたらエラーとなる。空っぽかどうか条件分岐するだけでいいのに・・・誰も見ていないが、その時私は不気味な微笑を浮かべていたと思う。

マクロってテストが大事なのにすっかり忘れていた。応募用のファイルをダウンロードして、データの書き換えなんかほとんどしなかったからな。ま、それ以前にもっと慎重なテストと、エラーを予測する経験が不足していたという事か。

次回(マクロ問題があるかどうかは不明)のためにも、友人のファイルをしっかり作ってあげて経験を積み、本当に初級者脱出と言えるようになりたいです。