今日、VB-Report を使った帳票出力プログラムを書いていた時の話。
色々帳票内の編集をした後で、例えば
For y As Integer = aaa To bbbFor x As Integer = ccc To dddReport.Cell("**Hoge", x, y - 1).Attr.LineBottom(VBReport8.BorderStyle.None, xlColor.Auto)Report.Cell("**Hoge", x, y).Attr.LineTop(VBReport8.BorderStyle.None, xlColor.Auto)NextNext
みたいにして、余分な罫線を消している。
ちょっと説明すると、帳票デザイン時には「全行出力された」状態で、つまり全ての罫線が表示された形でテンプレートの Excel シートを作成している。
そのため、プログラムでデータのセットを行った後、最後に不要な(データが出力されていない)部分の罫線を消しているのである。
具体的には「消す」というより、「透明な線で罫線を上書きする」という感じだが。
で、実際にその罫線がデザイン時に「そのセルの上枠の線」として引かれたか「下枠の線」として引かれたかプログラム内ではわからないので、「1つ上のセルの下枠の線(LineBottom)」と「そのセルの上枠の線(LineTop)」の両方を消しているわけだ。
なのに、消えないのである。
まあ、よくあるミスとして、プログラム内で動的にセルを指定するので、全然間違ったセルに処理をしているとか、そういうことがあるんだけど、今回はそうではない。
位置はばっちり合っているのに消えないのである。
悩みましたよ・・・
VB-Report の情報をググったり。
横向きの罫線の位置は LineBottom か LineTop しか指定できないので、これで駄目ならどうしようもない。
試しに、BorderStyle.Hair で赤色の線を引いてみたけど、消せない罫線の上だけ赤色にならないのである。
こればっかりやってたわけじゃないんだけど、結局解決に 2時間かかりましたぜ(^^;
解決方法は、「テンプレートの Excel シートの罫線を引き直す」です。
つまり、原因はわかんなかった(^^;;;
でも、一旦 Excel 上で罫線を消して、もう一度同じ位置に「下枠の線」として罫線を引いてやると、ちゃんと消すことができるようになった・・・むーん・・・
まあ、原因はわからないけど、そういう時は「テンプレートを作り直せ」ということがわかったからいいかな(^^;(もう、このプログラム、制作が 4日遅れてるんですけど・・・(^^;)