半角チルダ

ExcelVBA、その他。
覚え書きや、補足資料などのスクラップブック。
end-u(1037781)

■ChartObjects.Chart内のTextBoxes.Formula

2008-04-11 23:59:00 | 気をつけたほうがいいこと
(ぅーん...久し振りの新ネタ:-)
シート上のグラフオブジェクト内に、セルへリンクしたテキストボックスを配置する際、
グラフオブジェクトを配置したセル範囲内へリンクするとCPU使用率が上がる。

つまり、グラフの裏のセルにリンクするとCPU使用率がはねあがるという話です。
この場合のテキストボックスは、グラフの上に独立したテキストボックスを単純に重ねたものではなくて、チャートエリア内に作成するテキストボックスの事です。
テキストボックスのリンクセルがグラフとちょっとでも重なるとダメなようです。
グラフが画面上の表示範囲から外れると使用率は戻るので、どうもテキストボックスの画面描画を際限なく繰り返してるような印象を受けます。

[再現手順]
1.新規Book、新規シート上にグラフオブジェクトを追加する。
 (データなしで[グラフウィザード]-[完了]でも可)

2.グラフオブジェクトを選択して、数式バーに = と入れ、グラフの左上のコーナーあたりのセルをクリック。
 (グラフオブジェクトが重なっているセルを選択する)

3.グラフオブジェクト内にテキストボックスが追加される。
 この時タスクマネージャを起動しているとCPUに高負荷がかかっている事が確認できる。
 シートをスクロールしてグラフを画面外にすると負荷が下がる。
 (確認環境はWindows2000sp4/Excel2000sp3。2007では発生せず)

環境作成コードは下記。
Sub try()
  Dim ch As Chart

  Set ch = Sheets.Add.ChartObjects.Add(100, 100, 100, 100).Chart
  With ch.TextBoxes.Add(20, 20, 20, 20)
    .Border.ColorIndex = 0
    .Formula = ch.Parent.TopLeftCell.Address(external:=True)
  End With
  Set ch = Nothing
End Sub

(結果)


環境によってはCPU使用率100%になります。
その状態で、ダイアログボックスなどを表示させたりすると、ロックがかかったような状態になる事があります。
例えばテキストボックス右クリック[テキストボックスの書式設定]など。
(ダイアログボックス表示まで時間がかかっていると考えられる...)
もしそうなったら、[esc]キー押しっ放しで復旧すると思います。
Comment
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする