[Excel]VBAでインライングラフを作成する2 - FB post for mutter

[Excel]VBAでインライングラフを作成する2

| コメント(0) | トラックバック(5)

昨日、『VBAでインライングラフを作成する』を投稿しました。その後で、バグと改善点が見つかったので、追加記事を書きます。

追加: 関連記事が幾つかあります。カテゴリExcelで検索してください。

バグ 1: データソースの長さにより、収まらない場合がある

データソースの行数が、グラフが配置される行数より短い場合、印刷範囲の調整が不十分なため、グラフが途中で切れる現象が発生していました。
完全にテストケース漏れでした。

Dim pre_br As Integer
pre_br = table_br
If table_br < 32 Then
    pre_br = 32
End If
ActiveSheet.PageSetup.PrintArea = "A1:AF" & CStr(pre_br)

これで、データソースの長さによらず正常に印刷される事を確認してあります。

バグ 2: 印刷時、縦方向にもセンタリングされてしまう

上記のテストケースで気づきました。横方向のセンタリングをする場合、縦方向のセンタリングを解除しないと、センタリングが旨く動作しない様です。

ActiveSheet.PageSetup.CenterHorizontally = True
ActiveSheet.PageSetup.CenterVertically = Falce

改善点: 集計表, グラフの自動削除機能追加

データソースの内容が変わった時、以前のシートをコピーしデータソースのみ修正する。と言う事は十分考えられます。
今までは、手作業で集計表やグラフを消してから、新しいデータソース用のグラフを作成する。と言う作業が必要でしたが、それでは面倒なので、処理の先頭で削除する処理を入れました。
A1~E1に集計表のタイトルが、A2~E11に集計表が作られる。と言う前提でのコードを示します。

' 集計表全体の削除
ActiveSheet.Range("A1:E11").Value = ""

' 集計表の罫線を削除
ActiveSheet.Range("A1:E11").Borders.LineStyle = xlNone

' タイトル部分の『セルの結合』を解除
ActiveSheet.Range("A1:E1").MergeCells = Falce

' グラフを削除
ActiveSheet.ChartObjects.Delete

これで、集計表とグラフは全て削除されます。
余談ですが、はじめ

' グラフを削除
ActiveSheet.DrawingObjects.Delete

と書いてしまったら、マクロを起動する実行ボタンも一緒に消えてしまいました。フォーム類もDrawingObjects配下だったのですね。まぁ、当たり前と言えば当たり前なのでしょうが。

' 集計表の罫線を削除
ActiveSheet.Range("A1:E11").Borders.LineStyle = xlNone

の部分ですが、論理的には、

' 集計表の罫線を削除
ActiveSheet.Range("A2:E11").Borders.LineStyle = xlNone

で良いハズなのですが、再描画をかけるとタイトルの周りに罫線が配置されてしまう。と言うトラブルに見舞われました。
いろいろと触ったところ、

' 集計表の罫線を削除
ActiveSheet.Range("A1:E11").Borders.LineStyle = xlNone

とする事で、改善される事が分かりました。
理由は不明ですし、なんか気持ちが悪いのですが、いくら論理的であっても実際の動作に不具合があるのでは意味が無いので、上記の様にタイトル部分の罫線も解除するコードを書く事にしました。

トラックバック(5)

トラックバックURL:

ExcelのVBAでグラフを作成する作業を続けています。懸案の1つだった、重... 続きを読む

ExcelのVBAでグラフを作成する作業を進めています。昨日、近似曲線を重ね... 続きを読む

ExcelのVBAによるグラフ作成です。少しずつパターンが増えて来ました。今... 続きを読む

ExcelのVBAによるグラフ作成です。今回は、少し変わり種です。『レーダー... 続きを読む

コメントする

サムネイル

[Excel]VBAでインライングラフを作成する2 - FB post for mutter
RSS 0.91
RSS 0.92
RSS 1.0
RSS 2.0
ATOM

twitter

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 6.3.3

このブログ記事について

このページは、いまい やすゆきが2017年1月31日 16:15に書いたブログ記事です。

ひとつ前のブログ記事は「[Excel]VBAでインライングラフを作成する」です。

次のブログ記事は「[Excel]VBAで重ね合わせインライングラフを作成する」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。