• ベストアンサー

エクセルでこんなことできますか?

上司に、調べるようにいわれたんですが・・。 エクセルのシートにオートシェイプで作った図が5つあります。その図をマクロのボタンで表示したり、隠したりできますか?ただし1つの図に対してボタンは1つです。場所が狭いため、表示するボタンと非表示にするボタン合計10個の置き場がないらしいのです。図形5個はそれぞれ独立していて、同時に2個表示したり、5個表示したり、あるいは全部かくしたり、ということをしたいそうなんですが、どなたかお力をおかしください。

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

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

Sheet1に四角形を貼り付けました。 またボタンを1つ貼り付けました。ボタンのクリック・イベントとして Sub ボタン6_Click() If Worksheets("sheet1").DrawingObjects(1).Visible = True Then Worksheets("sheet1").DrawingObjects(1).Visible = False Else Worksheets("sheet1").DrawingObjects(1).Visible = True End If End Sub としました。 ボタンをクリックすると、現われる・消えるが交互に 行われます。 これではダメですか。

violet-3
質問者

お礼

できました!ありがとうございました。ダメなどころか大助かりです。早速報告します。

その他の回答 (4)

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

>トグルボタンとは何でしょうか Toggle ButtonはToggle Switchから来ていて、つまみを上下に動かして開閉するスイッチです。toggleはコートなどのボタン代わりの服を止めるひもについている棒状の木製のボタンのようなもの。 これにスイッチの棒が似ていたからではないかと思う。ラヂオボタン(MACなどで)とも言う。VBAではオプションボタンとも言う。○の中に小●の表示されるもの。ラジオボタンは、旧式の自動車用ラジオでは、各チャンネルごとにボタンが割り振られていたので、それと似ているところから来る。 ON―押す-OFF-押す-ON-押すーOFF・・・ となるのが特徴。

  • nishishi
  • ベストアンサー率39% (17/43)
回答No.4

トグルボタンを使ってON、OFFで表示、非表示をさせたら 5個のボタンでできると思いますけど、それじゃあ駄目なのでしょうか

violet-3
質問者

補足

ご回答ありがとうございます。トグルボタンとは何でしょうか?初めて聞いたので・・・

回答No.3

ごめんなさい。安易に「マクロの記録」で作ったのでミスしました。 Sub 表示切替() With Worksheets("sheet1").DrawingObjects(1) .Visible = Not .Visible End With End Sub #2さんの方法で良いのかなと思います。私が >あまりきれいではないですが といったのは、if ~ =true then        elseif~ =false then の部分がなんとかならないか…、と考えていました。 で、上のようなマクロはいかがかな。と再回答しました。 したがって他の部分は#2さんのままです。 ただ、DrawingObjects(1) は最初に作った図形なので、最初にフォームから「マクロ実行ボタン」なんか作ってしまうと、いきなり「実行ボタン」が非表示になって慌ててしまいますけどね。 では。

violet-3
質問者

お礼

できました!ありがとうございました。助かりました。早速報告します。

回答No.1

あまりきれいではないですが、 Sub 表示切替() ActiveSheet.Shapes("Oval 1").Select If Selection.ShapeRange.Fill.Visible = False Then Selection.ShapeRange.Fill.Visible = True ElseIf Selection.ShapeRange.Fill.Visible = True Then Selection.ShapeRange.Fill.Visible = False Else End If If Selection.ShapeRange.Line.Visible = False Then Selection.ShapeRange.Line.Visible = True ElseIf Selection.ShapeRange.Line.Visible = True Then Selection.ShapeRange.Line.Visible = False Else End If End Sub というマクロで可能です。"Oval 1"というのは、私の実験した図が楕円だったので、ここは変更して使って下さい。 図形の中身と輪郭を別々に表示・非表示命令したものです。

violet-3
質問者

補足

早速の回答ありがとうございます。実行できたのですが、非表示にしたとき 図形のハンドルが残ってしまうのですが、何か間違っているのでしょうか?

関連するQ&A