下記のようなグラフのサイズ調整するVBAプログラムをEXCEL2007で動かしました。
VBEで実行すると正常に動作します。
シートに図形を設置し、その図形にマクロを登録して実行すると、
グラフが3画面位広がってしまいます。
図形にマクロ登録してグラフ調整を正常に動かすことはできないのでしょうか?
-----------------------------------------------------
'グラフの再調整を行うサブルーチン
Sub chartRerange()
Dim wb As Workbook
Dim strWbName As String
Dim myRng1, myRng2, myRng3 As Range
Dim myChart As Shape
Dim rngTarget As Range
'開いているすべてのワークブックを処理対象とする
For Each wb In Workbooks
strWbName = wb.Name
'「月度」が含まれているならば処理
If InStr(strWbName, "月度") <> 0 Then
Set myRng1 = wb.Worksheets(2)
Set myRng2 = wb.Worksheets(3)
For Each myChart In myRng1.Shapes
'グラフならば
If (TypeOf myChart.OLEFormat.Object Is ChartObject) Then
Select Case myChart.Name
Case "chart1"
Set rngTarget = Range("B24:AG42")
End Select
'グラフを指定したエリアに配置する
With myChart
.Top = rngTarget.Top
.Left = rngTarget.Left
.Width = rngTarget.Width
.Height = rngTarget.Height
End With
End If
Next
End If
Next
MsgBox "処理完了"
Set wb = Nothing
Set myRng1 = Nothing
Set myRng2 = Nothing
Set myChart = Nothing
Set rngTarget = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
バグかどうかの前に。
提示コードでは
>Set rngTarget = Range("B24:AG42")
ここでRangeの親Objectが指定されていない為、
標準モジュール上のコードならActiveSheet.Range("B24:AG42")がSetされています。
(たぶんマクロ登録した図形が配置されているシート)
それは意図した動作ですか?
また、グラフの場合ChartObjectをLoopすれば良いです。
2007では試していませんが
Sub test()
Dim wb As Workbook
Dim ch As ChartObject
Dim i As Long
'開いているすべてのワークブックを処理対象とする
For Each wb In Workbooks
'「月度」が含まれているならば処理
If InStr(wb.Name, "月度") <> 0 Then
For i = 2 To 3
With wb.Worksheets(i)
For Each ch In .ChartObjects
If ch.Name = "chart1" Then
With .Range("B24:AG42")
ch.Top = .Top
ch.Left = .Left
ch.Width = .Width
ch.Height = .Height
End With
End If
Next
End With
Next
End If
Next
MsgBox "処理完了"
End Sub
概ねこんな感じかと。
ありがとうございます。
無事動作しました!
グラフのシート指定があいまいだったのが原因だったのですね。
ループの仕方も勉強になりました。
グラフを初めて扱って、困っていたのでとても助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのグラフの色を統一す...
-
はみ出たレーダーチャートの表...
-
EXELグラフをWORDに貼り付ける...
-
エクセルのグラフに上下限値の...
-
Excelグラフ
-
Excelのグラフで上と右の枠線を...
-
グラフの線だけをコピペしたい!
-
Sma4のグラフ作製
-
Excelでグラフの種類「縦棒」で...
-
wordで方眼用紙は作れますか?
-
Excelで日付のグラフへの表示
-
【至急】Excelで睡眠時間のグラ...
-
Excel2007のグラフで右の枠線を...
-
wordで数直線・グラフを作成
-
回答をプロットするってなんで...
-
Excel2010 グラフ 横軸目盛線の...
-
Excelで膨大な系列数のグラフを...
-
EXCELで数値に対応したベクトル...
-
Excelのグラフ「プロット...
-
エクセルでグラフの平均化を教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのグラフの色を統一す...
-
エクセルのグラフに上下限値の...
-
グラフの線だけをコピペしたい!
-
【至急】Excelで睡眠時間のグラ...
-
Excelのグラフで
-
Excelのグラフで上と右の枠線を...
-
エクセルでグラフの平均化を教...
-
ワードでCos、sinの図を書きたい
-
エクセル グラフのプロットエ...
-
EXELグラフをWORDに貼り付ける...
-
Excelのグラフ「プロット...
-
はみ出たレーダーチャートの表...
-
excelで線と線の間を塗りつぶし...
-
Excelグラフ
-
wordで数直線・グラフを作成
-
Sma4のグラフ作製
-
EXCELで数値に対応したベクトル...
-
Excelで膨大な系列数のグラフを...
-
グラフの上側が空いているので...
-
Excel:角ばったグラフの線を滑...
おすすめ情報