![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
ExcelVBAに関する質問です。
シート上にある表とグラフがあり、グラフ上にテキストボックスで表の合計値を表示させています。
その方法は以下の通りです。
1.表の[合計値]を求めるセルを作る。
2.シート上の見えない部分(例.グラフの裏側など)で、合計値に単位を付加する。
(例.セルC15に[=C10&"kwh"]と入力)
3.テキストボックスの数式バーに上で単位を付加したセルを入力する。
(例.数式バーに[=C15]と入力)
表とグラフを含めて75行で1日分となるので、毎日75行分をコピー&ペーストして当日分の入力欄を作成しているのですが、表内の合計欄などはコピーすると参照セルがコピー先のセル番地に反映されるのですが、テキストボックス内のセル番地は反映されません。
これを一つ一つ直すのは大変なので、マクロなどを使ってボタン一つで直す(またはそのようなテキストボックスを作成できる)様にしたいのですが、VBAでテキストボックス内の数式バーをコントロールすることは可能なのでしょうか?
また同様にグラフのデータ範囲もコピー先に自動的に反映されないので、これもコントロールできる方法があれば教えて頂きたいと思います。
拙い知識で考えられる方法としては、
1.グラフ裏の見えないセルに、テキストボックスの参照先となるセル番地を記入(=[前日の参照番地]+75)
2.1日分のデータ範囲をコピーすると自動的に参照先のセル番地もコピー先に反映される
3.マクロを起動するとテキストボックスの数式バーに【"="&[当日の参照先セル]】と入力される
(または上記の様に入力されたテキストボックスを作成する)
グラフの方の対処方法は思いつきません。
ただグラフについてはボタン押しでグラフを作成する様にすればいいと思うのですが、シート上の体裁が崩れてしまうのでやりたくないのが実情です…
識者の方、よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
(ANo.1補足へのレス)
『グラフ上のテキストボックス』とは、
もしかしたら、グラフの上に独立したテキストボックスを単純に重ねたものではなくて、
チャートエリア内に作成するテキストボックスですか?
だとすると、ちょっと厄介な感じですね。
コピー後、一旦テキストボックスを削除して作成し直したほうが良さそうです。
(Excelのバージョンによるのかもしれませんが、コードでの設定だと不具合あり)
詳しく調べる時間が無かったので、作成し直す方向でコードを組んでみました。
Sub try2()
Dim r As Range 'セル範囲格納用変数
Dim ch As Chart
Dim i As Long
Dim arg
'コピー後範囲の左上セルをA1とした時のリンクセル相対アドレスを _
TextBoxの数量分記述しておく
arg = VBA.Array("C1", "C2", "C3", "C4")
If TypeName(Selection) <> "Range" Then MsgBox "セル範囲選択要": Exit Sub
Set r = Selection.Offset(75)
Selection.Copy r
Set r = r.Resize(74, 2)
With ActiveSheet
Set ch = .ChartObjects(.ChartObjects.Count).Chart
End With
ch.SetSourceData Source:=r
ch.TextBoxes.Delete
For i = 0 To UBound(arg)
'TextBox設置位置を変数iを使って変動配置する
'...Add(Left,Top,Width,Height)
With ch.TextBoxes.Add(ch.ChartArea.Width - 50, 10 + i * 20, 40, 15)
.Border.ColorIndex = 0
.Formula = r.Range(arg(i)).Address(external:=True)
End With
Next
Set r = Nothing
Set ch = Nothing
End Sub
また、チャートエリア内テキストボックスの場合、
『グラフ裏の見えないセル』にリンクすると、
バージョンによっては不具合が出る可能性があります。
http://excelfactory.net/excelboard/exgeneral/exc …
少なくとも私の環境(win2000sp4/xl2000sp3)では発生しました。
気をつけた方が良いかもしれません。
No.2
- 回答日時:
テキストボックス新規作成で良いなら
コピーしてから、Shiftを押しながら「編集」「図のリンク貼り付け」でリンク付きのテキストボックス(大きさはセルのサイズ)になります。
上記すら面倒なら、ツールバーのユーザー設定でコマンドのツールにある
"カメラ"をツールバーに設定してください。
セル選択して"カメラ"を押せばリンク付きのテキストボックスになります。
この回答への補足
コメントありがとうございます。
今回はコピーする方法がなんとか見つかりそうなのでコピーで行きたいと思います。
ご意見ありがとうございました。
No.1
- 回答日時:
こんにちは。
シート上の体裁が崩れないように(マクロ)ボタン押しでグラフ作成する事も可能ですが、
ご質問内容に添うと
『VBAでテキストボックス内の数式バーをコントロール』
Sheets(1).TextBoxes(1).Formula = "C15"
『グラフのデータ範囲もコピー先に自動的に反映されないので、これもコントロール』
Sheets(1).ChartObjects(1).Chart.SetSourceData Source:=データ範囲
...などとする事で可能です。
例題として
A B C
1 項目 数値 (参照番地)
2
: (グラフ)
75 合計
のようなレイアウトで、コピーする範囲が A1:J75
グラフ範囲が項目名含めてA1:B74の74行2列
TextBoxにセットするアドレスがA1起点で1行目3列目(つまりC1)
...というケースを考えてみると、
最初にコピー元の A1:J75 セル範囲を『選択した上で』下記マクロ実行。
Sub try()
Dim r As Range 'セル範囲格納用変数
If TypeName(Selection) <> "Range" Then MsgBox "コピー元範囲選択要": Exit Sub
Set r = Selection.Offset(75)
Selection.Copy r
Set r = r.Resize(74, 2)
With ActiveSheet
.ChartObjects(.ChartObjects.Count).Chart.SetSourceData Source:=r
.TextBoxes(.TextBoxes.Count).Formula = r.Cells(1, 3).Address
End With
Set r = Nothing
End Sub
...という感じだと、コピーも一緒にできます。
グラフデータ範囲やTextBoxにセットするアドレスについては、
実際の位置関係によって修正が必要です。
わからない場合は補足お願いします。
この回答への補足
早速のご返答ありがとうございました!
グラフに関しましては求めていた通りの動作が可能となりました。
テキストボックスについてなのですが、実はグラフ上にテキストボックスが複数個存在するのですが、それぞれの参照先セル番地の相対位置を記述するにはどのようにしたらよろしいのでしょうか?
またそれぞれのテキストボックスのナンバーはどの様にして調べたらよいのでしょうか?
(グラフなどのオブジェクトのナンバーを知る方法はわかったのですがテキストボックスでは上手くいきませんでした…)
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) Excel シート複数 金額日計表と日付 簡単にシートコピーしたら前日の残高と日付を変更させたい 1 2022/07/15 22:10
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Excel(エクセル) Excelで日付のグラフへの表示 2 2022/04/15 11:04
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Excel(エクセル) エクセルシートの合計の変動 5 2022/04/05 15:56
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルで勝手に「折り返して...
-
Excel 行の連続データを列に参...
-
エクセルの2ページ目の作り方
-
エクセルで隣接していない複数...
-
EXCELのオートフィルの設定を変...
-
メールソフト「サンダーバード...
-
Excel)軽いデーターのはずなの...
-
「選択範囲を解除してアクティ...
-
エクセル 別シートへのコピー...
-
Excelでコピーした行の挿入を繰...
-
Excelに、ダブルクォーテーショ...
-
エクセルで「コピーしたセルの...
-
エクセルオートフィルで書式を...
-
EXCELシートをPowerPointにきれ...
-
Excelのコピー・切り取り機能が...
-
エクセルでの行数・列数を指定...
-
エクセルで値だけコピーして背...
-
EXCEL数値が存在する列の項目名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルの2ページ目の作り方
-
エクセルで勝手に「折り返して...
-
エクセルで隣接していない複数...
-
Excel 行の連続データを列に参...
-
エクセルで「コピーしたセルの...
-
EXCELシートをPowerPointにきれ...
-
EXCELのオートフィルの設定を変...
-
Excel)軽いデーターのはずなの...
-
メールソフト「サンダーバード...
-
Excelに、ダブルクォーテーショ...
-
エクセルオートフィルで書式を...
-
エクセルで値だけコピーして背...
-
Excelでコピーした行の挿入を繰...
-
エクセルで、選択範囲の数値全...
-
エクセルでの行数・列数を指定...
-
「選択範囲を解除してアクティ...
-
エクセル 別シートへのコピー...
-
EXELで複数のとびとびのセルを...
おすすめ情報