• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのグラフの不動化)

エクセルのグラフの不動化

HohoPapaの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

グラフのタイトルの一覧を適当なセル範囲に縦方向に入力して起き この順番にグラフを横方向に並べるということでよければ こんなコードはいかがでしょうか。 Sampleなコードは、B列の20行目からタイトル一覧を並べた例です。 課題シートにグラフはあるが、この一覧に無いグラフは無視しています。 直観的には、視野から外れる場所に移動するのがよさそうですが どうしたいかを明示すれば、マクロで対応することも可能と思います。 Sub Sample()     Dim r As Long '行番号変数  Dim c As Long '列番号変数  Dim j As Long 'グラフカウンター  Dim w As Long  Dim d As Long      r = 20 'グラフタイトル一覧開始行番号  c = 2 ' グラフタイトル一覧格納列番号  w = 600  d = 25    Do      If Cells(r, c).Value = "" Then Exit Do      For j = 1 To ActiveSheet.ChartObjects.Count    With ActiveSheet.ChartObjects(j)     If .Chart.ChartTitle.Text = Cells(r, c).Value Then      .Top = ActiveWindow.VisibleRange.Top + d      .Left = ActiveWindow.VisibleRange.Left + w      w = w + .Width     End If    End With   Next j   r = r + 1    Loop   End Sub

akira0723
質問者

補足

HohoPapaさん 毎度です。 今回も一発回答でした。 グラフタイトルはコード中で指定するように思っていましたがシート中に入力の方が汎用性高く使い勝手が良いですネ。 マクロをセルイベントにして横表示完成です。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 出来れば縦表示もお願いできませんでしょうか? 縦、横をどこで規定するのか想像つかず。 追記:特に困ることは無いのですが、グラフタイトルが数字の時は動かないようです。 最初は適当に数字を入れていたので全く反応せず。 HohoPapaさんのコードで「全く」は有り得ないと文字にしたら動きました。 タイトルが数字のグラフは消えることなく、置いてきぼりでこれもGood!!

関連するQ&A

  • エクセルのグラフの不動化

    いつも大変お世話になっております。 先日ここで表題につき下記ご回答いただきいくつかのシートで使用を開始したのですが、下記の不具合が発生しました。 VBA(グラフが不動化)するのですが、Bookの保存でエラーが出て止まります。 このVBAは既にいくつかのシートに展開しており初めての不具合です。 よって、Book特有の不具合なら現象が再現出来ないと分からないかとも思いますが何かアイディアあればご教示お願いします。 ちなみに最初のTESTBook(シート)では問題なく動いて、上書き保存も普通にできます。このシートのVBAをコピペしているのですが、問題のBookでは上書き保存するとエラー表示で止まってしまいます。 エラーの箇所(黄色ハイライト)は > If .Chart.ChartTitle.Text = Cells(r, c).Text Then で「このオブジェクトにはタイトルがありません」 と表示されます。 最初にタイトルが数字のみの場合に対応していただいたのでタイトルを数字のみ、文字のみで試しましたがダメで、グラフを新しく作成し直してもダメでした。 尚、一番最初の動作確認では2つのグラフの内1つのみしか動かなくて、動かない方のグラフを新規で作成し直したら2つとも期待通りに動くようになったのですが、これで完成と 保存しようとしたら上記のところでエラーが発生して止まります。 VBAを中断してクローズして再度開くとVBAは正常に動きます。 そして保存しようとすると止まります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) '縦パターン Dim r As Long '行番号変数 Dim c As Long '列番号変数 Dim j As Long 'グラフカウンター Dim w As Long Dim d As Long r = 5 'グラフタイトル一覧開始行番号 c = 11 ' グラフタイトル一覧格納列番号 w = 600 d = 50 Do If Cells(r, c).Value = "" Then Exit Do For j = 1 To ActiveSheet.ChartObjects.Count With ActiveSheet.ChartObjects(j) If .Chart.ChartTitle.Text = Cells(r, c).Text Then .Top = ActiveWindow.VisibleRange.Top + d .Left = ActiveWindow.VisibleRange.Left + w d = d + .Height End If End With Next j r = r + 1 Loop End Sub

  • エクセルのグラフ

    グラフが貼り付けられているシートを見えない状態でグラフ描画したいのですがうまくいきません ちなみに、今のコードはこうです。 Sub 電力力率表示() ActiveSheet.ChartObjects("グラフ 3").Activate ActiveChart.SeriesCollection(2).Select ActiveChart.SetSourceData Source:=Sheets(s_NAME) _ .Range("A2:C146"), PlotBy:=xlColumns End Sub

  • グラフの削除をExcelVBAで行う

    こんばんは。同じシートの中にグラフを3つ作成し、 コマンドボタンを押すとグラフを削除し、新しいグラフを作成するようにしたいのですが、グラフの3つ目を削除のしようとするとエラーが発生してしまいます。 2つ目までは順調に消えるのですが、3つ目のグラフが削除されないのはなぜなのでしょうか。 色々教えていただき何とか形になってきたのですが、確認すると色々とぼろがでてきてしまい、困っています。 どなたか教えていただけないでしょうか。 宜しくお願い致します。 Sub Glafu() Dim chartobj As ChartObject Worksheets("ABC").Activate ActiveSheet.ChartObjects(1).Delete ActiveSheet.ChartObjects(2).Delete ActiveSheet.ChartObjects(3).Delete Set chartobj = Worksheets("ABC").ChartObjects.Add(600, 0, 300, 200) chartobj.Chart.SetSourceData Worksheets("ABC").Range(Range("b2").End(xlDown), ActiveCell.End(xlToRight)) With Worksheets("ABC").ChartObjects(1).Chart .HasTitle = True .charttaitle.Text = "タイトル1" End With Set chartobj = Worksheets("ABC").ChartObjects.Add(600, 200, 300, 200) chartobj.Chart.SetSourceData Worksheets("ABC").Range(Range("e2").End(xlDown), ActiveCell.End(xlToRight)) With Worksheets("ABC").ChartObjects(1).Chart .HasTitle = True .charttaitle.Text = "タイトル2" End With Set chartobj = Worksheets("ABC").ChartObjects.Add(600, 400, 300, 200) chartobj.Chart.SetSourceData Worksheets("ABC").Range(Range("h2").End(xlDown), ActiveCell.End(xlToRight)) With Worksheets("ABC").ChartObjects(1).Chart .HasTitle = True .charttaitle.Text = "タイトル3" End With End Sub

  • エクセル・マクロでグラフを最背面に移動させたい

    エクセルのグラフを3つピッタリと重ねて表示しています 後ろのグラフを選択する時「最背面に移動」させてますが これをマクロにしたいです とりあえずマクロの記録でしてみたら Sub Macro1() ActiveSheet.ChartObjects("グラフ 7").Activate ActiveChart.ChartArea.Select Selection.ShapeRange.ZOrder msoSendToBack ActiveWindow.Visible = False Windows("Book1.xls").Activate Range("A1").Select ActiveSheet.ChartObjects("グラフ 5").Activate ActiveChart.ChartArea.Select Selection.ShapeRange.ZOrder msoSendToBack ActiveWindow.Visible = False Windows("Book1.xls").Activate Range("A1").Select ActiveSheet.ChartObjects("グラフ 2").Activate ActiveChart.ChartArea.Select Selection.ShapeRange.ZOrder msoSendToBack ActiveWindow.Visible = False Windows("Book1.xls").Activate Range("A1").Select End Sub と出来たのですが、マクロの実行そしてみると3列目の Selection.ShapeRange.ZOrder msoSendToBack の所で、 「実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしてません」 となってしまいます、どうすればよいのでしょう ボタンを押したら最前面のグラフが最背面に移動するようにしたいのですが難しいのでしょうか

  • エクセル マクロ ファイルを開きグラフ作成

    VBAを使用して、エクセルファイルをユーダで選択し読み込み 読み込んだエクセルデータからグラフを作成したいと考えています。 コマンドボタンに下記の通り入力しファイルを読み込みました。 Sub ファイルを開いてセルに表示() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") If OpenFileName <> "False" Then Filename = Dir(OpenFileName) ActiveSheet.Cells(1, 7) = Filename Else MsgBox "キャンセルされました" End If End Sub 読み込んだエクセルファイル、Sheet1をデータとして下記の マクロを実行してグラフを作成したいのですが、どのように手直しを 行ったらよいのか分からないので教えて頂けないでしょうか。 Sub グラフを作成し別シートに貼り付け() '可変範囲折れ線グラフを作成 Dim hani As String shname = ActiveSheet.Name 'シート名を記憶 rmax = Range("A2").End(xlDown).Row '最終行 hani = "C1:C" & rmax & ",E1:E" & rmax Range(hani).Select Charts.Add ActiveChart.ChartType = xlLine ActiveChart.Location Where:=xlLocationAsObject, Name:=shname ActiveChart.SeriesCollection(1).XValues = "='" & shname & "'!R2C1:R" & rmax & "C1" '折れ線グラフを切り取り貼り付け ActiveChart.Parent.Cut Worksheets.Add(after:=Worksheets(Worksheets.Count)) _ .Name = Format(Now(), "グラフ1") ActiveSheet.Paste With Range("A1:F16") ActiveSheet.ChartObjects("グラフ 1").Width = .Width ActiveSheet.ChartObjects("グラフ 1").Height = .Height End With ActiveSheet.ChartObjects(1).Name = "全体グラフ" End Sub

  • Excel VBA グラフを任意sheetに移動させるには?

    アクティブになっているsheetのグラフを参照し、 それを『まとめ』sheetに移動して張り付ける。 現在 ★マークのところでエラーになっています。 オブジェクトは、このメソッドをサポートしていません…と、これは何のエラーになるのでしょうか? アドバイスお願い致します. Sub test() Dim str As String ★str = ActiveSheet.ChartObjects.Name 'strにグラフ名を代入 ←不具合中… Sheets("まとめ").Activate '---sheet 『まとめ』を アクティブにする ActiveSheet.ChartObjects(str).Activate ActiveChart.Paste End Sub

  • Excelマクロ・グラフエリア・プロットエリアのサイズを変更及び綺麗に並べる

    何方か、宜しくお願いします。 質問1 ワークシート上の複数のグラフを選択した状態でマクロを実効して 全てのグラフエリア・プロットエリアを同じサイズに変更するマクロを 教えて下さい。 (下記のコードでは、一つのグラフのプロットエリアのみ変更になります。) Sub グラフサイズ() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select 'プロットエリア With Selection .Top = 17 .Left = 27 .Width = 463 .Height = 330 End With Range("A3").Select End Sub (参考:http://oshiete.nikkeibp.co.jp/qa780484.html) 質問2 質問1で修正したグラフを3列、行数は任意でワークシート上に綺麗に並べたい のですが、どのようなコードでしょうか。?(グラフとグラフの間は5ポイント位 隙間を入れたいと思います。グラフ数は20~40位、Excel2000)

  • エクセルグラフを別シートのグラフに連動させることはできますか?

    エクセルのグラフで教えてください。 下記のVBAを使って同じグラフを それぞれ別シートに作成しています。 VBAの3行目のActiveSheetはシート名(入力画面)を指します。 入力画面のセルで1または2を入力することで グラフの色が変わるようにしています。 そのグラフと同じものを別シート(印刷用画面)に作成したく 入力画面の入力で印刷用画面の入力も変わるようにしたつもりなのですが・・・ この方法だと、入力した際に 一瞬印刷用画面に移動して画面がちらついてしまいます。 このちらつきをなくしたいのですが なにかよい方法はありますでしょうか? よろしくお願いいたします。 Sub Sam1() Dim i, nColor As Integer ActiveSheet.ChartObjects("グラフ 8").Select i = 1 nColor = 2 '←「2」の時の色 If Cells(i, 13) = 1 Then nColor = 5 '←「1」の時の色 ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor Sheets("印刷用画面").Select ActiveSheet.ChartObjects("グラフ 2").Select nColor = 2 '←「2」の時の色 If Sheets("入力画面").Cells(i, 13) = 1 Then nColor = 5 '←「1」の時の色 ActiveChart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor Sheets("入力画面").Select Range("H15").Select End Sub

  • Excelマクロによるグラフの消去方法

    Excelマクロ初心者です。 マクロで、グラフを消去する操作をさせたいのですが、どのグラフを消去するかというグラフの指定をどうしたら良いか悩んでいます。 単純に記録マクロでやってみると、以下のようになりました。「グラフ1」といったグラフの名前が分かっていればこれをそのまま応用すればいいのですが、グラフの名前が不明の場合にはどうしたらよいのでしょうか。マクロの中で、グラフの位置などから、グラフの名前を取得するといったようなことなどできるのでしょうかね。どういった方法でも結構ですので、よろしくお願いいたします。 Sub Macro1() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select ActiveWindow.Visible = False Selection.Delete End Sub

  • エクセルのマクロで教えてください。仕事で、種類の異なる20個のグラフを

    エクセルのマクロで教えてください。仕事で、種類の異なる20個のグラフを一つのシートに作成しますが、2個だけ内容が異なるグラフになってします この20個の散布図グラフで、クリックして選択したグラフだけ、y軸の目盛を自動スケールで最大値、最少値、目盛間隔の分割数は5個に自動にできないでしょうか? このサイトなどいくつか調べて、以下でアクティブシートのすべてのグラフ(20個)をセルに入力された値に一括で変更することはできるのですが、クリックして選択したグラフだけ、上記のようにできません。よろしくお願いします。 Sub 全部() Dim co As ChartObject For Each co In ActiveSheet.ChartObjects With co.Chart With .Axes(xlValue) .MinimumScale = Range("A1").Value '最小値 .MaximumScale = Range("A2").Value '最大値 .MajorUnit = Sheets("Sheet1").Range("A3") '目盛間隔 End With End With Next End Sub