![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.5ベストアンサー
- 回答日時:
>やってみたのですが上手くいきません
どううまくいかないのかわからないのですが、オブジェクトの選択状態(白抜き矢印状態)ではイベントは発生しません。
マウスカーソルが白抜き十字架状態でイベントが発生します。
下記はその対応もしています。
'シェープのクリックイベントを設定(どこでもいいが1度実行する)
Private Sub Worksheet_Activate()
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
sh.OnAction = ActiveSheet.Name & ".shape_click" 'シート上のシェープがクリックされたら、このシートモジュールのshape_clickを呼ぶ
Next
'ついでにやっておいたほうがいいかも
ActiveCell.Select '既に選択状態のオブジェクトがあったら選択解除するためにセルを選択
'[オブジェクトの選択]状態
With Application.CommandBars.FindControl(ID:=182)
If .State = msoButtonDown Then
.Execute '[オブジェクトの選択]状態なら解除
End If
'.Enabled = False '[オブジェクトの選択]を変更できないようにする(必要なら入れる。これを実行した場合は必ずどこかで下記のEnabled=Trueを実行する)
End With
End Sub
'[オブジェクトの選択]のEnabledを変更している場合は必要
Private Sub Worksheet_Deactivate()
Application.CommandBars.FindControl(ID:=182).Enabled = True '[オブジェクトの選択]を変更できるようにする(変更できなくしている場合は入れる)
End Sub
'シェープのクリックイベント
Private Sub shape_click()
Shapes(Application.Caller).Fill.Visible = Not Shapes(Application.Caller).Fill.Visible 'シェープの塗りつぶしの書式設定でvisibleを逆にする
Shapes(Application.Caller).Line.Visible = Not Shapes(Application.Caller).Line.Visible 'シェープの境界線の書式設定でvisibleを逆にする
End Sub
また、Shapeを消すのは塗りつぶしと境界の表示の反転で行っているので、どちらかだけのものがある場合は下記で。
Private Sub shape_click()
Select Case Application.Caller
Case "楕円 1", "楕円 2" '塗りつぶしも境界線もある場合
Shapes(Application.Caller).Fill.Visible = Not Shapes(Application.Caller).Fill.Visible
Shapes(Application.Caller).Line.Visible = Not Shapes(Application.Caller).Line.Visible
Case "楕円 3", "楕円 4" '塗りつぶしだけの場合
Shapes(Application.Caller).Fill.Visible = Not Shapes(Application.Caller).Fill.Visible
Case "楕円 5", "楕円 6" '境界線だけの場合
Shapes(Application.Caller).Line.Visible = Not Shapes(Application.Caller).Line.Visible
End Select
End Sub
No.3
- 回答日時:
オートシェープのあるシートのVBAに下記をコピー。
一度違うシートを選んで元に戻ると、Worksheet_Activateでシェープのクリックイベントを設定する。
細かい状況が分からないので、全てのシェープの線と塗りつぶしを逆状態にするプログラム。
シェープが見えなくなってもマウスカーソルがその上に移動すると形が変わるはず。
Private Sub Worksheet_Activate()
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
sh.OnAction = ActiveSheet.Name & ".shape_click"
Next
End Sub
Private Sub shape_click()
Shapes(Application.Caller).Fill.Visible = Not Shapes(Application.Caller).Fill.Visible
Shapes(Application.Caller).Line.Visible = Not Shapes(Application.Caller).Line.Visible
End Sub
返事が遅れてすみません。
オートシェイプをクリックしたら表示され、またクリックしたらパソコンの画面上では、消えたように見え、マウスをそこにもっていくとマウスの形が変わるのが理想です。
hotosysさんの案が近いようなのですが、上記のやり方をもう少し分かりやすく説明していただけないでしょうか? やってみたのですが上手くいきません…すいません。お願い致します。
No.2
- 回答日時:
オートシェイプをクリックすることで非表示にすることは可能ですが、非表示にしたオートシェイプをクリックすることができませんので、表示させるには別の方法を考える必要があります。
とりあえずクリックしたら非表示にする方法ですが
1、画面上にオートシェイプを作成します。
2、オートシェイプに名前をつけます。
オートシェイプを選択した状態で画面左上の「名前ボックス」(セルのアドレスが表示されている箇所)につけたい名前を入力しEnterキーを叩きます。
※仮にDAENとしておきます。
3、オートシェイプを選択した状態で右クリックし、ショートカットメニューから「マクロの登録」
4、「新規作成ボタン」をクリックします。
5、以下のマクロ(VBA)を記述
Activesheet.Shapes("DAEN").Visible = False
6、Visual Basic Editorを閉じます。
表示させる際は、標準モジュールに
Sheets("Sheet1").Shapes("DAEN").Visible = True
というマクロを作成し、メニューから実行するかボタンなどにマクロを登録します。
※オートシェイプがSheet1にある場合です。
No.1
- 回答日時:
図形が消えてしまうと画面上では捉えられないのではと思うので
別にコマンドボタンを1つシートに貼り付け
Private Sub CommandButton1_Click()
If ActiveSheet.Shapes("Oval 2").Visible = True Then
ActiveSheet.Shapes("Oval 1").Visible = False
CommandButton1.Caption = "表示"
Else
ActiveSheet.Shapes("Oval 1").Visible = True
CommandButton1.Caption = "非表示"
End If
End Sub
これでコマンドボタンをクリックすると消えたり現れたりする。
コンなのはどうだろう。
場合により("Oval 1").の1の部分は変わるから注意。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- モニター・ディスプレイ 「.cur」のアイコン表示について 4 2023/03/04 10:21
- Chrome(クローム) グーグルクロムをマイクロソフト・エッジに切り替える方法 2 2022/06/20 10:08
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) ExcelVBAで自動調整できますか? 3 2023/08/25 22:59
- Excel(エクセル) エクセルにサムネイル画像組み込み 2 2022/09/02 17:13
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/04/21 13:46
- HTML・CSS HTMLの条件によって表示方向が切り替わる実装のコードを教えて下さい。 (コードは下記リンクを参照) 1 2022/09/25 14:35
- その他(Microsoft Office) エクセルVBA イベントの切り替え 2 2022/05/01 03:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントの画面がずれる
-
Excelで隠れてしまった図...
-
Excelにメールを添付する
-
excelでチェックボックスが表示...
-
テキストボックスがないのに、...
-
パワーポイントにエクセルの表...
-
pdf xchange viewer オブジェク...
-
EMBED関数について
-
ExcelでB5をA4にしたい。
-
Wordのオブジェットと図の違い...
-
Wordのツールバーに常に数...
-
FDFってなに?
-
文字の特定箇所に背景色をつけ...
-
イラストレーターの面積を求める
-
MRTG Cisco CPU負荷率の表示に...
-
EXCELのグラフのオブジェクト変...
-
【エクセル】列を挿入しようと...
-
ルートの中に数字を入れたい
-
EXCELのショートカットキー
-
Illustrator CS2 不透明100%な...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントの画面がずれる
-
Excelで隠れてしまった図...
-
Excelにメールを添付する
-
パワーポイントにエクセルの表...
-
excelでチェックボックスが表示...
-
pdf xchange viewer オブジェク...
-
ExcelでB5をA4にしたい。
-
イラストレーターの面積を求める
-
テキストボックスがないのに、...
-
エクセルに入力しようとすると...
-
花子10の図形をワードやエク...
-
エクセルに任意のページのワー...
-
EMBED関数について
-
Wordのツールバーに常に数...
-
エクセルからワードへの表挿入...
-
Wordのオブジェットと図の違い...
-
【エクセル】列を挿入しようと...
-
文字の特定箇所に背景色をつけ...
-
オートシェイプが消えたり出た...
-
エクセルの[コントロールの書式...
おすすめ情報