質問する
0

マクロでグラフの表示範囲を変更する方法について

質問日 2019-02-01 09:48:08 +0100

updated 2019-02-15 18:25:09 +0100

himajin100000 のGravatar画像

Calcのシート上に配置したボタンを押すと、30日前から当日までのデータを使ってグラフを引く。 こういう機能を持たせたいのですがどうしたらいいでしょうか。

グラフのデータは広い範囲を指定しておき、表示領域だけ30日前から当日にしてみましたが、何も表示されません。 下のようなコードでデータ領域を明示的に設定する方法を考えましたが、この設定した領域をどのように グラフに設定すればいいのか分かりません。

Dim addr(1) As New com.sun.star.table.CellRangeAddress

'グラフのデータを指定する
addr(0).Sheet = sheet.RangeAddress.Sheet
addr(0).StartColumn = 2
addr(0).StartRow = idx_min
addr(0).EndColumn = 2
addr(0).EndRow = idx_max
addr(1).Sheet = sheet.RangeAddress.Sheet
addr(1).StartColumn = 7
addr(1).StartRow = idx_min
addr(1).EndColumn = 12
addr(1).EndRow = idx_max
edit retag flag offensive close merge delete

1 Answer

0

回答日 2019-02-03 14:13:24 +0100

himajin100000 のGravatar画像

updated 2019-02-04 03:23:15 +0100

予め、Sheet1のA1からA4の4セルにそれぞれ1,2,3,4を, B1に=A1^2を入力して、B1をコピーしてB4まで貼り付けた上で、A1:B4の範囲を対象にグラフを作っておきました。

Sub Main()

    REM ツール→オプション
    REM LibreOffice→Basic IDE オプション→拡張型を使用のチェックを入れておくと
    REM As以下にインターフェースか構造体名を指定できる。
    REM サービス名は指定できないので注意。
    REM このとき、当該変数については、インテリセンスが使用可能になります。
    REM ただし、メソッドチェーンのインテリセンスにはなりませんのでご注意。
    REM このオプションを使用しない場合、変数の型はObjectかVariantに変更してください

    Dim book As com.sun.star.sheet.XSpreadsheetDocument
    Dim addr(0) As com.sun.star.table.CellRangeAddress

    addr(0).Sheet = 0
    addr(0).StartColumn = 0
    addr(0).StartRow = 0
    addr(0).EndColumn = 1
    addr(0).EndRow = 1

    book = ThisComponent

    REM com.sun.star.table.XTableChart.setRanges( ([in] sequence< com::sun::star::table::CellRangeAddress > aRanges)
    book.getSheets().getByIndex(0).getCharts().getByIndex(0).setRanges(addr)

End Sub
edit flag offensive delete link もっと
ログイン/サインアップして回答する

質問ツール

2 followers

Stats

Asked: 2019-02-01 09:48:08 +0100

Seen: 34 times

Last updated: Feb 04