質問する
0

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

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

sigotnin のGravatar画像

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

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

edit retag flag offensive close merge delete

1 Answer

0

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

himajin100000 のGravatar画像

updated 2018-07-28 03:11:31 +0100

' もう少し真面目なコードに書き直した。(2018-07-15)
' Sheet1の
' A1:A4に1,2,3,4
' B1に = A1^2として、B2:B4にこれをコピー。
' A1:B4を選択して散布図を挿入
' グラフが入ったこのシートがアクティブな状態でMain()を実行
' B1を10にしてみる。 (訂正: 元の記述じゃ違いがわかりにくかったorz )

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

' このサイト、コードのインデントどうやるんだ?
' 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 もっと

Comments

「整形済み」は行頭にスペース4つですね。バックスラッシュ3つ(```)で囲むのは使えないようです。 ということで、コードの部分だけ整形済みに修正しました。

nogajun のGravatar画像nogajun ( 2018-07-23 13:10:37 +0100 )edit
ログイン/サインアップして回答する

質問ツール

2 followers

Stats

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

Seen: 93 times

Last updated: Jul 28