次の方法で共有

Excel/グラフ内に書いたテキストボックスの文字内容をVBAで変更する。

Anonymous
2011-10-30T11:40:36+00:00

Excel 2007のシート1に書いたグラフ内に、テキストボックスを書いて説明文を表示し、その文字の内容をVBAで変更したいのですが解りません。

軸ラベルなどは、うまくVBAで変更出来ているのですが、テキストボックス内の文字の変更のやり方が解りません。

宜しくご指導下さい。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-11-01T10:58:37+00:00

大変お世話になってます。

今、新規に Excel を起動し、データー12個の単純な「折れ線グラフ」を作り、

そこにテキストボックスを貼り付けて実行したのですが、

全く同じエラーが表示されました。

その後、色々といじっている内に、うまくいく時があったので、

手順を考えてみると、今までは「 Sheet 上 」に貼り付けていたようです。

グラフが大きいので、一見グラフに貼り付けたと思っていたのですが、

*テキストボックスの表示を「一番手前に表示」にしていたので、

 グラフの上に見えていた。

実際は、「 Sheet 上 」に貼り付けていたようです。


「切り取り」→「グラフをアクティブにする/グラフエリアをクリックする」→「貼付」

                 ↑ これが抜けていました。


上記の様にすると問題なく動きました。

当方の操作ミスで大変ご迷惑をおかけしました、申し訳ありません。

おかげで、VBAでの「テキストボックス」の追加の仕方/座標の指定の仕方などを

教えて頂きました。

ありがとうございました。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-10-30T16:26:35+00:00

私は簡単なグラフにテキストボックスを一つ貼り付けた例でやってますので、実際にそのまま通用するかどうかは疑問ですが、ChartObjectから手繰っておられるようなので私も試してみましたが

↓でうまく行きました。

Sub bbb()

Dim chartObj As ChartObject

Dim chart1 As Chart

Set chartObj = ActiveSheet.ChartObjects(1)

Set chart1 = chartObj.Chart

chart1.Shapes(1).TextFrame.Characters.Text = "abcdefghijk"

End Sub

と言うことは、おっしゃっているのがテキストボックスではないことになります。

たとえばグラフタイトルなどは見かけは同じでもテキストボックスではありません。

グラフ上のテキストボックスを選択状態にした時、アドレスボックスになにが表示されますか?

この回答は役に立ちましたか?

0 件のコメント コメントはありません

7 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-10-31T01:32:53+00:00

    確認の追加です。

    ↓のコードを実行してみてください。

    グラフの左上隅にテキストボックスを追加して文字列を入れます。

    Sub aaa()

    Dim wBox As Shape

    With ActiveSheet.ChartObjects(1).Chart

      Set wBox = .Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 200, 50)

      wBox.TextFrame.Characters.Text = "AAAAAAAAAA"

    End With

    End Sub

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2011-10-30T14:57:27+00:00

    早速の回答、有り難うございます。

    早速試して、以下のコードの様にして見ました。(前後は省略しています)


    '~~~~~~

    Dim chartObj As ChartObject

    Dim chart1 As Chart

    Set chartObj = ActiveSheet.ChartObjects(1)

    Set chart1 = chartObj.Chart

    chart1.SetSourceData Worksheets("Data_1"). _

        Range(Cells(dy_n(1) - 1, dx_n(1) - 1), _

        Cells(dy_max, dx_n(dx_max)))

    chart1.Shapes(1).TextFrame.Characters.Text = "abcdefghijk"

    '~~~~~~ ↑ここでエラー


    そうすると、以下のエラーメッセージが出されます。


    実行時エラー'2147024809(80070057)':

    指定したコレクションに対するインデックスが境界を超えています。


    Shapes(1) を Shapes(0) にしてもダメでした。

    これを参考にして、似た様なものを探してやってみます。

    何か、御指摘が有りましたら、宜しくお願い致します。

    *「 Form 」で使う 「 TextBox 」ではなく、メニューの「挿入」に有る「 テキストボックス 」です。

    MsgBox chart1.Shapes.Count

    とやると、"0" となるので、「Shapes 」ではない?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2011-10-30T13:55:50+00:00

    グラフはほとんど扱ったことがないので回答になってるかどうかわかりませんが、

    こんな感じで変えられると思います。

    Sub aaa()

    ActiveChart.Shapes(1).TextFrame.Characters.Text = "abcdefghijk"

    End Sub

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません