質問する
0

CalcのVBAマクロでグラフの更新を止めたい

質問日 2018-07-11 01:56:22 +0200

sigotnin のGravatar画像

実行速度を早めるために画面の更新を止めたいです。 'ThisComponent.LockControllers() ThisComponent.addActionLock() などで セルの更新を止めることができますが、 このセルを使って表示しているグラフの更新が止まりません。

既に存在するグラフ共々、更新を止めるにはどうしたらよいでしょう。

edit retag flag offensive close merge delete

1 Answer

0

回答日 2018-07-12 16:27:23 +0200

himajin100000 のGravatar画像

updated 2018-07-16 02:43:45 +0200

' もう少し真面目なコードに書き直した。(2018-07-15)
' Sheet1の
' A1:A4に1,2,3,4
' B1に = A1^2として、B2:B4にこれをコピー。
' A1:B4を選択して散布図を挿入
' グラフが入ったこのシートがアクティブな状態でMain()を実行
' A1を例えば5にしてみる。B1は25になるが、グラフは変化しない。

' ただし、この関数の仕様上、「既存のグラフの」更新を止めるものであり、コード実行後に挿入されたグラフは更新される

' このサイト、コードのインデントどうやるんだ?
' Tools->Options LibreOffice->Basic IDE check "use extended type"

Option Explicit

Sub Main()
LockAllChartControllersInSheet(ThisComponent.getCurrentController().ActiveSheet)
End Sub

Function LockAllChartControllersInSheet(sheet As com.sun.star.sheet.XSpreadSheet) As Boolean
Dim charts As com.sun.star.table.XTableCharts
Dim chartName As String
charts = sheet.getCharts()
For Each chartName In charts.getElementNames()
charts.getByName(chartName).getEmbeddedObject().lockControllers()
Next
LockAllChartControllersInSheet = True
End Function

上記を書くにあたって参考にしたJavaのコード:
https://opengrok.libreoffice.org/xref...

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

質問ツール

2 followers

Stats

Asked: 2018-07-11 01:56:22 +0200

Seen: 15 times

Last updated: Jul 16