2007年10月24日水曜日

第53回目 ちょっとした小物、罫線編-2

○第53回目 ちょっとした小物、罫線編-2

 とんだところに北村大膳。
 よほどのところに顔を出したのでしょうね。

 思わぬ展開になって前回は長くなってしまいました。当初は今回分の合わせて、1回の予定でしたのですが…。
 とんだところに、"冗長性"という事務屋にとって避けたい用語が出てき
たので、捨て置けずに、踏み込んでしまいました。
 操作マクロ関係は、機能だけでその内容など気にしていませんでしたので、捨て置きましたが、第53回の段階においてどうだといわれると、"美しくない"という気持ちが起きてしまい、つい寄道をしてしまいました。

 続きを続けます。
 今回は二つです。
 1.罫線ダイアログを出す
 2.五飛びに横罫線を引く
 です。
 1.はただ単に知っているかいないかという代物です。
 命令は、
  Application.Dialogs(xlDialogBorder).Show
 だけです。

 この構文では、( )の中が命になっています。
 ではほかには何があるのでしょうか。
 あんちょこによると、
 xlDialogPageSetup  印刷・ページセットアップ
 xlDialogSort ソート
 xlDialogOpen ファイルを開く
 xlDialogSaveAs 名前をつけて保存
 xlDialogFormatNumber 文字表示書式
 xlDialogAlignment 文字配置書式
 xlDialogActiveCellFormat 文字フォント書式
 xlDialogBorder 罫線設定
 となっています。
 漠然としていますので、何かで役立ててください、ということくらいのコメントでしょうか。

 次に、五飛びの横罫線(縦罫線は実線で毎列に引く)です。










 まず、五飛びの罫線の引きたい範囲を与えます。=⇒実行前に指定
 そして、飛び数を与えます初期値は5としています。=⇒InputBox()関数で指定
 前提条件としては、範囲の一番上及び一番下の罫線は実線で引きます、ということ。
 次に、必ずしも一番下がぴったりするということではないということ。
 また、既存で引かれている線をクリアしておくこと。
 この3点が、気をつけたい点でしょうか。
 手順を求めると、
 1.範囲内の既存の線をクリアする
 2.範囲の枠線を引く
 3.範囲内の縦線を引く
 4.五飛びの行を指定して横線を引く

 設定範囲の座標の取得はいいですね。何事をするにも基本命令群です。
 1.は、 selection.Borders.LineStyle = xlnone
 2.は、 Selection.BorderAround LineStyle := xlContinuous
 3.は、 Selection.Borders(xlInsideVertical).LineStyle = xlContinuous
 4.は、最初の行がgyo1ですので、次に横線を引くのはgyo+5となります(5はパラメータで与えるので実際は変数となる)。これをgyo9を越える範囲で行なう、ということになります。
 指定するセルの上に横線を引くという指定にします。
 指定するセルは、
  range(cells(gyo1+i-1,retu1),cells(gyo1+i-1,retu9)).select
 となります(iは1から始まる)。
 セルの上の線を引くのは、
  Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
 となります。

 for next文を使い、適切なところまで横線を引いていきます。
 for next文の最後は、きっちりあわなくても大丈夫です。これを越えたらおしまいですという数値をあてがえばいいことになります。
 このコントロールで、商を求める必要がありますが、
 商は、(a \ 5) で求められます。
 5行しかない時は、一回も線は引きません(上の線はすでに引かれています)。
 6-10行の時は、一回だけ線を引きます。
 11-14行の時は、二回だけ線を引きます。

 後は、考えればマクロを組みことが出来ます。

 もう少しヒントを…
 指定範囲の行数は、gyo_cntです。
 すると横線を引く回数は、(gyo_cnt-1)割る5の商となります。この間をiで動かします。
 横線を引くセルの行数は、gyo1+i*5となります。

 一瞬にして五飛びの線が引かれます。手作業でやっていた方にとっては感動ものです。

0 件のコメント: