2023/10/06

Notes - Excel 連携:#22)行と列の操作&高さと幅の設定

第 20 回からスタートした『帳票の作成』シリーズの 3 回目です。

前回に引き続き、帳票の出力前の準備作業を行います。今回は、シート内の行と列の操作に関してまとめます。


行の高さの操作

まずは、帳票全体を余裕のあるイメージにするために、行間を広めに設定します。

行の高さの設定は、Range オブジェクトの RowHeight プロパティを使用します。

Range.RowHeight プロパティ (Excel)

現時点では、何行の明細が出力されるかわかりませんので、シート全体に対して行の高さを設定します。前回のフォントの設定と同様 Cells プロパティを使うということですね。

   voSheet.Cells.RowHeight = 24

続いて、タイトル行の 3 行目は、フォントを大きくするので少し広めに設定します。また、1 行目と 4 行目は調整用なので狭く設定します。

行に対する Range オブジェクトを取得する方法も前回出てきましたね。そうです、Rows プロパティです。

   voSheet.Rows(3).RowHeight = 36
   voSheet.Rows(1).RowHeight = 6
   voSheet.Rows(4).RowHeight = 6


列幅の操作

次は列幅を設定します。各列の列幅は、デバイス名は 15、 枚数は 10、単価は 6、金額は 12 で設定します。また、1列目は1行目と同様調整用なので 2 とします。

列幅の設定は、Range オブジェクトの ColumnWidth プロパティを使用します。

Range.ColumnWidth プロパティ (Excel)

まず、シート全体の列幅を単価と同じ 6 に設定します。

   voSheet.Cells.ColumnWidth = 6

続いて列ごとに幅を設定します。次のように Columns プロパティに列番号を指定すると、列ごとに設定できます。

   voSheet.Columns(1).ColumnWidth = 2

列番号は、文字列でも設定可能です。引数が柔軟に設定でき便利ですね。

   voSheet.Columns("B").ColumnWidth = 15         'デバイス名列

Range プロパティを使用すると離れた列、連続した列をまとめて設定できます。

   voSheet.Range("C:C,F:F").ColumnWidth = 10   '白黒&カラー枚数
   voSheet.Range("E:E,H:I").ColumnWidth = 12   '金額&合計


フォーマットの設定

帳票の明細行分のフォーマットをセットします。この時点では、明細行数が特定できないので、列単位でまとめてセットしています。

ただ、この手法を使うと明細データがセットされないヘッダ部分のフォーマットも変更されています。そこで最後にヘッダ部分のエリアである 5 行目までを”文字列”に設定しています。

   oSheet.Range("B:B").NumberFormatLocal = "@"             '文字列
   oSheet.Range("C:I").NumberFormatLocal = "#,##0_ "    '数値
   oSheet.Rows("1:5").NumberFormatLocal = "@"               'ヘッダは文字列

Rows プロパティは、引数を文字列にして ":" でつなぐと連続した行をまとめて指定できます。


行列の指定方法

行列の指定方法がいろいろ出てきました。各プロパティと引数の指定方法をまとめると次の通りとなります。

指定方法 Rows Columns Range
数値 Rows(1) Columns(1) -
文字 Rows("4") Columns("B") Range("4:4")
Range("B:B")
連続範囲 Rows("1:5") Columns("C:I") Range("1:5")
Range("C:I")
離れた範囲 - - Range("E:E,H:I")

Range プロパティは行と列のどちらでも利用でき、離れた範囲も指定できる優れものです。ただ、有効に利用するには、引数の文字列をどのようの生成するかがポイントになりそうですね。


サンプルコード

ここまでの状態でエージェントを実行すると次のようになります。まだまだ味気がないですが、少しだけ帳票らしくなってきました。

最後に、今回追加したコードをまとめて掲載します。

Sub xInit(voSheet As Variant)
   ・・・
   'ヘッダタイトルの設定
   ・・・


   '行の高さの設定
   voSheet.Cells.RowHeight = 24
   voSheet.Rows(3).RowHeight = 36
   voSheet.Rows(1).RowHeight = 6
   voSheet.Rows(4).RowHeight = 6

   '列幅の設定
   voSheet.Cells.ColumnWidth = 6
   voSheet.Columns(1).ColumnWidth = 2
   voSheet.Columns("B").ColumnWidth = 15
   voSheet.Range("C:C,F:F").ColumnWidth = 10
   voSheet.Range("E:E,H:I").ColumnWidth = 12

   'フォーマットの設定
   voSheet.Range("B:B").NumberFormatLocal = "@" '文字列
   voSheet.Range("C:I").NumberFormatLocal = "#,##0_ " '数値
   voSheet.Rows("1:5").NumberFormatLocal = "@" 'ヘッダ領域は文字列
End Sub


前回 Notes - Excel 連携 次回

0 件のコメント:

コメントを投稿