• ベストアンサー

複数表示しているグラフの全てを非表示・表示状態にするには?

現在、画面上に4つ(2×2)のグラフを表示しています。 4つのグラフを非表示にしたいのですが、下記のコードを実行すると、一番左上のものだけが非表示になります。どうやったら全部非表示にできるのでしょか。.Visible=Falseの部分を.Deleteにしたところ4つ全部消えたので、おそらく画面上の位置で判定して処理してるのだと思うのですが。(ちなみに、.Shapeを使って別の方法を試してみたところ、シート上のコマンドボタンまで消えてしまい、うまくいきませんでした。) よろしくお願いします。(Excel2000使用) k=ActiveSheet.ChartObjects.Count For j=1 to k  ActiveSheet.ChartObjects(1).Visible=False Next j

noname#128465
noname#128465

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> ActiveSheet.ChartObjects(1).Visible=False (1) ではなく (j) ですね。 > Visible=Falseの部分を.Deleteにしたところ4つ全部消えた この場合は、順に1つづつ削除していくので、次に残ったグラフの中の ChartObjects(1) が削除され、これが繰り返されるからです。

noname#128465
質問者

お礼

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

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問コードは()内をjに直すと良いようですが、別に 全部非表示でよいなら Sub test01() TActiveSheet.ChartObjects.Visible = False 'True End Sub で良いようですよ。

noname#128465
質問者

お礼

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

関連するQ&A

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

    エクセルのグラフを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 オブジェクトはこのプロパティまたはメソッドをサポートしてません」 となってしまいます、どうすればよいのでしょう ボタンを押したら最前面のグラフが最背面に移動するようにしたいのですが難しいのでしょうか

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

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

  • シート上のオートシェイプをすべて非表示にしたい

    マクロで ActiveSheet.Shapes.Visible = False と作って見ましたが、だめでした。 シート上のオートシェイプをすべて非表示にしたい時は、マクロではどのようにすれば良いでしょうか? よろしくお願い致します。 Excel2002 WINXP

  • 複数の、Falseの判定方法について

    現在ゲームを作っているんですが、 どうしても、コーディングが、長くなってしまうので、 やりかたを教えて欲しいのですが、 複数の、オブジェクトの判定のやり方を、知りたいのです。 SHAPEを、コントロール配列にして、 0~4までが、全部Falseだったら、 チェックを入れる。 という風にしたいのです。 現在は If (Shape(0).Visible = False) And (Shape(1).Visible = False) And ~省略~ Then    hanntei = True 'Boolean形 end if という風に、全部書いてます。 まだまだ、SHAPEは増やす予定なので、 そうするとどうしても、長くなってしまうので、どうにかしたいのですが、思いつきません。 どなたか、教えてください。

  • エクセルVBAで埋め込みグラフ(ChartObjects)のアクティブ

    エクセルVBAで埋め込みグラフ(ChartObjects)のアクティブ化のエラー(1004)解消方法について。 予めWorkbook1のシートに6つの埋め込みグラフを用意してあります。 Workbook2のシート1に数値データがあり、シート2に先のWorkbook1のシートを コピペして、数値の参照先をWorkbook2のシート1に変更して利用したいと考えております。 以下の処理を用いて、グラフ内の文字サイズが変わってしまうので、文字サイズを再設定しなおそうと、 埋め込みグラフを1つずつ選択し、文字サイズ設定を行おうとしているのですが、 chart 3を選択したところで、chartobjectクラスのactivateメソッドが失敗 (エラー 1004) が出てしまいます。 ちなみに、Workbook1のシート上で、以下の処理を行ってもエラーは出ません。 Workbook2にコピペしたものに対して、chart 1、chart 2の処理が済み、 chart 3になった所でエラーが発生します。 解決方法のご教授をよろしくお願い致します。 grp_cnt = ActiveSheet.ChartObjects.Count For j = 1 To grp_cnt Workbooks(2).Worksheets(2).Activate 'シート上のチャート中より、指定した名前のチャートを探す。 Set obj = ThisWorkbook.ActiveSheet.ChartObjects(j) crt_name = ThisWorkbook.ActiveSheet.ChartObjects(j).Name '変更したいチャートをアクティブにする。 ActiveSheet.ChartObjects(crt_name).Activate ActiveChart.ChartArea.Select Selection.AutoScaleFont = True With Selection.Font .Size = 10 End With Next j

  • グラフの削除を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

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

    お世話になります。 2017年にエクセルでグラフを常に画面の決まった位置に表示させたい、とお願いして下記のご回答いただいて複数のシートで便利に使わせて頂いているのですが、下記のコードでは新しいグラフが右に追加されるのでいつの間にかデータ入力時にグラフうを見ないようになってしまっています。(5年間でグラフの枚数が増えていました) そこで ①グラフは新らしい方から左から右に並べて表示させたい。 もしグラフの最大枚数を決めた方が分かり易いなら10枚で余ります。 但しシートによってグラフの枚数は異なります。 ②更に可能ならグラフタイトルで左から右に並ぶ順番を指定出来れば更に汎用性が出ると思うのですがハードルが上がるようなら不要です。 シートによって画面構成が違っているので ③グラフを縦に、新らしいグラフから上から下に並べて表示するように出来ないでしょうか? これも作成順に上から順か、出来ればグラフタイトルで指定出来れば最高です。 ============================== Private Sub Worksheet_SelectionChange(ByVal Target As Range) w = 600 d = 25 For i = 1 To ActiveSheet.ChartObjects.Count With ActiveSheet.ChartObjects(i) .Top = ActiveWindow.VisibleRange.Top + d .Left = ActiveWindow.VisibleRange.Left + w w = w + .Width End With Next i End Sub

  • ブック上にあるグラフの外枠を全て消したい

    シート状に複数のグラフ(散布図)が作られてます. これの輪郭線をすべて消去したいです. Excel操作でいうと「グラフエリアの書式設定」→「パターン」タブ→ 輪郭を「なし」となります. 一グラフに対して自動記録マクロをとると,次のようになります. これを,ブック上(シート上でなく)にある全てのグラフオブジェクト に対して施したいのですが,その方法がわかりません. Sub Macro1() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select With Selection.Border .Weight = 1 .LineStyle = 0 End With Selection.Interior.ColorIndex = xlAutomatic Sheets("Sheet1").DrawingObjects("グラフ 1").RoundedCorners = False Sheets("Sheet1").DrawingObjects("グラフ 1").Shadow = False End Sub よろしくお願い致します。

  • 複数のセルのなかに該当があればオートシェイプを表示

    http://okwave.jp/qa/q8365189.html 上記質問の続きです。 画像のようなチェック表をExcelで作っています。 右側欄外に表を作成し、 ◎を付ける番号、○をつける番号をそれぞれ入力し、 「入力内容を反映」ボタンをクリックすると、 オートシェイプで配置した◎や○が表示されるようにしたいです。 VBAを以下のように作成してみたのですが、 ◎はつくのですが、 ○をつけるVBAが動きません。 どのように修正するべきでしょうか? ご教授ください! Private Sub CommandButton1_Click() '○で囲むVBA Dim c For Each c In Range("U103:Y103") If InStr(c.Value, "1") > 0 Then ActiveSheet.Shapes("1を囲む○").Visible = True Else ActiveSheet.Shapes("1を囲む○").Visible = False End If If InStr(c.Value, "2") > 0 Then ActiveSheet.Shapes("2を囲む○").Visible = True Else ActiveSheet.Shapes("2を囲む○").Visible = False End If Next c ・ ・ ・ '最も重要なものを◎で囲むVBA If Range("T103").Value = "1" Then ActiveSheet.Shapes("1を囲む◎").Visible = True Else ActiveSheet.Shapes("1を囲む◎").Visible = False End If If Range("T103").Value = "2" Then ActiveSheet.Shapes("2を囲む◎").Visible = True Else ActiveSheet.Shapes("2を囲む◎").Visible = False End If ・ ・ ・ End Sub ちなみに「'○で囲むVBA」のコードだけを残して動作させてみると、 1や2が一番右のセル(Y103)に入力されると、1を囲む○、2を囲む○がそれぞれ表示されるのですが、 それ以外のセル(U103からX103)に1や2を入力しても○は表示されません。 全コードを入力して動作させると、 1や2を一番右のセル(Y103)に入力しても○はどこにも表示されません。 よろしくお願いいたします!

  • Excel2003で簡単な図形の表示と非表示のプログラムを作成したので

    Excel2003で簡単な図形の表示と非表示のプログラムを作成したのですが上手く出来ません UserForm1に Private Sub OptionButton1 Click() ActiveSheet.Shapes("Oval 1").Visible=True 'ワークシート1に楕円の図形1表示 ActiveSheet.Shapes("Oval 2").Visible=False 'ワークシート1に楕円の図形2非表示 End Sub Private Sub OptionButton2 Click() ActiveSheet.Shapes("Oval 1").Visible=False 'ワークシート1に楕円の図形1非表示 ActiveSheet.Shapes("Oval 2").Visible=True 'ワークシート1に楕円の図形2表示 End Sub 上記の記述では上手くいくのですが、下記の様に ワークシート2の図形3と4も同様に表示・非表示したいため追加するとエラーになります。 UserForm1に Private Sub OptionButton1 Click() ActiveSheet.Shapes("Oval 1").Visible=True 'ワークシート1の楕円図形1表示 ActiveSheet.Shapes("Oval 2").Visible=False 'ワークシート1の楕円図形2非表示 ActiveSheet.Shapes("Oval 3").Visible=True 'ワークシート2の楕円図形3表示 ActiveSheet.Shapes("Oval 4").Visible=False 'ワークシート2の楕円図形4非表示 End Sub Private Sub OptionButton2 Click() ActiveSheet.Shapes("Oval 1").Visible=False 'ワークシート1の楕円図形1非表示 ActiveSheet.Shapes("Oval 2").Visible=True 'ワークシート1の楕円図形2表示 ActiveSheet.Shapes("Oval 3").Visible=False 'ワークシート2の楕円図形3非表示 ActiveSheet.Shapes("Oval 4").Visible=True 'ワークシート2の楕円図形4表示 End Sub VBAの勉強中の初心者です。教えて頂けないでしょうか。

専門家に質問してみよう