半角チルダ

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

■ChartObjects.ChartのTextBoxes.Formulaと名前定義

2009-05-09 22:30:00 | 気をつけたほうがいいこと
ちょっと前のQ&Aです。

テキストボックスのセル参照について - 教えて!goo

テキストボックスとは、オートシェイプのテキストボックスの事です。
シート上の配置ではなく、チャートエリア内に作成するテキストボックスのケースで、
Formulaプロパティにセルへのリンクを設定する時に[名前定義]を使ってリンクする場合は、ちょっと気をつけたほうが良いかもしれないというお話。

定義した名前が "test" という名前の時、数式を単純に "=test" としただけではBook保存時にリンクが保持されないようです。
Book名から指定する必要があります。

簡単な検証コード。
Option Explicit

Sub try()
  'ThisWorkbookにSheetを追加し、TextBoxやChartObjectを配置。
  Dim s As String

  With Sheets.Add
    s = .Name
    With .Range("A1")
      .Name = "test"
      .Value = 1
    End With

    With .TextBoxes.Add(100, 50, 20, 20)
      .Border.ColorIndex = 0
      .Formula = "=" & s & "!A1"
    End With
    With .TextBoxes.Add(130, 50, 20, 20)
      .Border.ColorIndex = 0
      .Formula = "=test"
    End With
    With .TextBoxes.Add(160, 50, 20, 20)
      .Border.ColorIndex = 0
      .Formula = "=" & ThisWorkbook.Name & "!test"
    End With

    With .ChartObjects.Add(100, 100, 100, 50).Chart
      With .TextBoxes.Add(0, 0, 20, 20)
        .Border.ColorIndex = 0
        .Formula = "=" & s & "!A1"
      End With
      With .TextBoxes.Add(30, 0, 20, 20)
        .Border.ColorIndex = 0
        .Formula = "=test"
      End With
      With .TextBoxes.Add(60, 0, 20, 20)
        .Border.ColorIndex = 0
        .Formula = "=" & ThisWorkbook.Name & "!test"
      End With
    End With
  End With
End Sub

実行後Bookを保存して開き直すと確認できます。



チャートエリア内のテキストボックスのリンクについては他にも注意点あり。
■ChartObjects.Chart内のTextBoxes.Formula
Comment
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする