• ベストアンサー

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

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

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >ActiveSheet.Shapes.Visible = False Shapes というのは、Shapes というオブジェクトで、Visible プロパティを持っていません。以下のように、それぞれのオートシェイプをピックアップして、ループで非表示にしていきます。 Sub AutoShapesInvisible() '全てのオートシェイプを非表示にするマクロ Dim shp As Shape  For Each shp In ActiveSheet.Shapes  If shp.Type = msoAutoShape Then   shp.Visible = msoFalse  End If  Next End Sub

omusupa
質問者

お礼

ありがとうございます。 Shape という、型があることも知りませんでした。 大変わかりやすい説明ありがとうございます。

その他の回答 (1)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

以下のマクロは如何でしょうか。(因みにexcel2000) Sub Macro1() ActiveSheet.DrawingObjects.Select Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Line.Visible = msoFalse End Sub

omusupa
質問者

お礼

ありがとうございます。

関連するQ&A

  • JavaScriptで書き出したオートシェイプにテキストを挿入したいの

    JavaScriptで書き出したオートシェイプにテキストを挿入したいのですができません。 先日、ExcelのシートにJavaScriptでオートシェイプを書き出す方法を質問した者です。 今度は書き出したオートシェイプにテキストを挿入したいのですが上手くいきません。 どうすれば良いのか教えてください。 ※またもやJavaScriptで解決したいです。 なお、現在悩み中のソースは以下のようです。 ※教えて頂いたソースほとんどそのままですが... function createShapes() { var excel = new ActiveXObject( "Excel.Application" ); excel.visible = true; var sheet = excel.Workbooks.Add().activeSheet; // オートシェイプ挿入:引数の105は吹き出しを示す sheet.Shapes.AddShape(105, 123, 37.5, 151.5, 94.5); // ココでメソッド、プロパティがないとエラーになってしまう...  sheet.Shapes("AutoShape 1").Characters.Text = "ほげほげ"; } よろしくお願いします。

  • Excel非表示行中のshapeが移動できない

    Excel VBAで不明な点がありましたので、質問させてください。 オートシェイプ(四角形/msoRectangle)を、VBAで移動、変形させていたのですが、オートシェイプのある行を非表示にした場合、表示している行以外に移動させても、オートシェイプが表示されません。 ・shapes.Topやshapes.Leftは変更されています。 ・shapes.visibleもmsoTrueです。 ・activesheet.activateでシートを更新してみても表示されません。 ・該当行を非表示から表示にしたら、変更後の位置、大きさにオートシェイプが出現します。 これは、エクセルの仕様(バグ)なのでしょうか? それとも、何か別の設定を行えば、行を非表示にしたまま、オートシェイプを別の位置に移動(出現)させることができるのでしょうか? どうか、皆様のお知恵をお貸しください。 OSはWin7Pro 32bit、Excelは2010です。

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

    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)に入力しても○はどこにも表示されません。 よろしくお願いいたします!

  • エクセルVBAでオートシェイプを点滅させたい。

    エクセル2000です。 ワークシートに配置したオートシェープ(「矢印」と名前を付けてあります。)をチカチカさせたいのです。 Sub マーク点滅() Dim i As Integer i = 0 Do i = i + 1 Loop Until i = 3 Sheets("AAAA").Shapes("矢印").Visible = True Sheets("AAAA").Shapes("矢印").Visible = False End Sub とやってみましたがぜんぜんだめでした。 いい方法はないでしょうか?

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

    Excelで以下の図のような入力フォームを作成しています。 セルA1に1と入力したら1を◎で囲み、 セルB1からD1に2 4 5と入力したら2 4 5を○で囲みたいです。 それぞれの番号を囲むように、ふたつのオートシェイプを作成し、 それぞれに名前をつけました。 ◎をつける方法は以下のようにVBAを作成しうまくいったのですが、 ○をつける方法がわかりません。 ひとつでなく複数のセルを参照して、そのなかに該当があれば○をつける、 というやり方を教えていただけないでしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Target.Value = "1" Then On Error GoTo SHAPEMAKE ActiveSheet.Shapes("1を囲む内側の○").Visible = True ActiveSheet.Shapes("1を囲む外側の○").Visible = True Else ActiveSheet.Shapes("1を囲む内側の○").Visible = False ActiveSheet.Shapes("1を囲む外側の○").Visible = False End If Exit Sub SHAPEMAKE: ・・・・・・ End With End Sub

  • 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の勉強中の初心者です。教えて頂けないでしょうか。

  • VBAでオートシェープのテキストを取得の際、ShapesとDrawingObjects?

    エクセル2003です。 オートシェープの基本図形の「額縁」に以下のマクロを登録しました。 マクロを呼び出したオートシェープに表示してあるテキストを取得しようとするものです。 Sub test() x = Application.Caller MsgBox ActiveSheet.Shapes(x).Characters.Text End Sub ところが実行時エラーとなってしまいます。 試行錯誤の結果、ShapesをDrawingObjectsに変えるとうまくいきます。 なぜでしょうか?

  • マクロ実行時、非表示シートを表示させたくない

    ファイル[testBOOK]の中に(sheet1)(sheet2)があり (sheet2)は非表示,ブック保護されています。 (sheet1)にあるマクロAAボタンで ・[図A]を非表示 ・[図B]を表示 ・マクロBBを実行 するようになっています。 --------------------------------------- Sub AA() '≪非表示≫ ActiveSheet.Shapes("図A").Visible = False '≪表示≫ ActiveSheet.Shapes("図B").Visible = True 'ブック保護解除 ActiveWorkbook.Unprotect 'マクロBB実行 Sheets("sheet2").Visible = True Sheets("sheet2").Select Application.Run "testBook.xlsm!BB" ActiveWindow.SelectedSheets.Visible = False 'ブック保護 ActiveWorkbook.Protect End Sub ---------------------------------------- マクロBBとは[sheet2]の中にある ・[図A]を非表示 ・[図B]を表示 です。 上記のマクロを実行させると(sheet2)が瞬間的に表示されてしまうのですが、 これを表示させないようにすることはできないでしょうか?

  • オートシェイプの文字が更新されない。

    こんにちは。 タイトルの件で、投稿いたします。 【現状】 ・EXCEL20007を使用しています。 ・シート構成は、カテゴリ選択シート、メニューシート、その他20シート程度。 --- 現在マクロを使用して、ある機能を実装しています。 【機能】  カテゴリシートでカテゴリを選択し、メニューシートへ遷移します。  この遷移時に、カテゴリ名をその他20シートのオートシェイプに反映させた状態で、  メニューシートを表示したいのです。 以下のマクロでそれは実現しました。 しかし、20シート中数シートで、オートシェイプのテキストが更新されていない場合がありました。 この場合、「カテゴリ名表示」のオートシェイプをクリックすることにより、 オートシェイプのテキストが更新されます。 なぜ、クリックしないと更新されないのでしょうか。 以下のマクロでのテキスト代入後、再度オートシェイプをselectするようにするなど、 そういった1文を追加してみたりしましたが、変化はありませんでした。 '================================================================== '== '各シートのオートシェイプ「カテゴリ名表示」にカテゴリ名をセット '================================================================== カテゴリ名 = カテゴリシート..Range("A1").Value  For Each sht In Worksheets    If sht.Visible = True Then      sht.Activate      For Each objShp In ActiveSheet.Shapes        'カテゴリ名表示というオートシェイプがあるかチェック        If objShp.Name = "カテゴリ名表示" Then          '存在すれば、カテゴリ名をセット          sht.Shapes("カテゴリ名表示").Select          Selection.Characters.Text = カテゴリ名        End If      Next    End If  Next '================================================================== 以上、原因をご存じの方や思い当たる節がある方、どうかご教示ください。 わかりにくい部分などがありましたら、ご指摘いただければ追記させていただきます。 よろしくお願いいたします。

  • オートシェイプの表示の切り替え

    はじめまして。よろしくお願い致します。 エクセル2003で、楕円などのオートシェイプをクリックすると、表示できたり非表示にしたり、切り替えれるマクロかVBAがあれば教えてください。お願い致します。

専門家に質問してみよう