こんばんは。
エクセルでのボタンの表示/非表示についての質問です。
シートA、B、C、があり、AのシートにもBのシートにもCのシートへジャンプするハイパーリンクが設定してあります。
シートCにAボタン、Bボタンがあり、ジャンプしてきたシートによってボタンを表示/非表示にしたいと考えています。
【Aシートからジャンプして来た場合】
Cシート:Aボタンは表示、Bボタンは非表示
【Bシートからジャンプして来た場合】
Cシート:Aボタンは非表示、Bボタンは表示
これができる方法を模索中です。
どうぞよろしくお願い致します。
No.4ベストアンサー
- 回答日時:
すみません、激しく勘違いしたようで。
。イベントの発生順序は、Activate --> FollowHyperlink です。したがって、
Activate イベントで一度両方のボタンを非表示にし、FollowHyperlink
イベントでどのシートのリンクがクリックされたかで分岐させて、必要な
ボタンを表示させればよいかと。
' // ■ ThisWorkbook モジュール
' // シートがアクティブになったとき発生するイベント
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Worksheets("C").Shapes("ボタンA").Visible = False
Worksheets("C").Shapes("ボタンB").Visible = False
End Sub
' // ハイパーリンクがクリックされたとき発生するイベント
Private Sub Workbook_SheetFollowHyperlink( _
ByVal Sh As Object, _
ByVal Target As Hyperlink _
)
Select Case Sh.Name
Case "A": Worksheets("C").Shapes("ボタンA").Visible = True
Case "B": Worksheets("C").Shapes("ボタンB").Visible = True
End Select
End Sub
余談ですが、、、
> それぞれに別のマクロが組まれています。
OnAction を使って割り当てるマクロを動的に切り替えることもできます。
ありがとうございます!!できました!!!
感謝感激雨あられです!(笑)
まさかこんなやり方があるとは。目からうろこです。
非常に図々しいお願いなんですが、
>OnAction を使って割り当てるマクロを動的に
>切り替えることもできます。
このやり方も教えて頂ければ幸いです。
ちなみにAボタンは並び替え、Bボタンは集計のマクロが組まれています。
誠に勝手なお願いですが、どうぞよろしくお願い致します。
No.5
- 回答日時:
> このやり方も教えて頂ければ幸いです。
ん? ヘルプで OnAction を調べてみればわかると思いますよ。
FollowHyperlink イベントを下記のようにするとか。
' // ハイパーリンクがクリックされたとき発生するイベント
Private Sub Workbook_SheetFollowHyperlink( _
ByVal Sh As Object, _
ByVal Target As Hyperlink _
)
Select Case Sh.Name
Case "A": Worksheets("C").Shapes("ボタンA").OnAction = "マクロA"
Case "B": Worksheets("C").Shapes("ボタンA").OnAction = "マクロB"
End Select
End Sub
No.3
- 回答日時:
> 「Web」ツールバーには、インターネットエクスプローラなどでよく
> 使う「戻る」「進む」ボタンがある
なるほど。。これならマクロなしでもできますね!
参考ですが、これをマクロから利用するコードです。
' // コマンド[戻る]を実行
Sub GoBack()
On Error Resume Next
Application.CommandBars.FindControl(Id:=1017).Execute
End Sub
' // コマンド[進む]を実行
Sub GoForward()
On Error Resume Next
Application.CommandBars.FindControl(Id:=1018).Execute
End Sub
この回答への補足
早速のご解答ありがとうございます。
CシートのAボタン、Bボタンはジャンプ元に戻るためのボタンではなく、それぞれに別のマクロが組まれています。
ですので、Aシートからジャンプして来た場合はCシートのAボタンだけを表示、Bシートからジャンプして来た場合はCシートのBボタンだけを表示させるようにしたいのです。
もし可能であれば、ハイパーリンクをクリックした時以外は両ボタンとも非表示にする方法も知りたいです。
ご面倒をおかけ致しますが、よろしくお願い致します。
No.2
- 回答日時:
A,Bボタンが飛んできたシートに戻るためだけの役目なら、
A、Bボタン両方なくてもエクセルの機能だけでできますが。
「表示」>「ツールバー」>「Web」をクリック
「Web」ツールバーが表示されるので、
「標準」ツールバー等のある画面上部にドラッグしておく
「Web」ツールバーには、インターネットエクスプローラなどでよく使う「戻る」「進む」ボタンがある
シート1からシート3へハイパーリンクで飛んだ後、
シート1へ戻りたければ、
「Web」ツールバーの「戻る」ボタンで戻れます。
シート2からシート3へ飛んだ場合も同様。
これに限らず、どのシートでもハイパーリンクで飛んだら
「戻る」ボタンで元のシートへ戻れるということです。
A,Bボタンが「戻る」ためのものではなく他のことをするためのものでしたら、ご容赦願います。
この回答への補足
早速のご解答ありがとうございます。
CシートのAボタン、Bボタンはジャンプ元に戻るためのボタンではなく、それぞれに別のマクロが組まれています。
ですので、Aシートからジャンプして来た場合はCシートのAボタンだけを表示、Bシートからジャンプして来た場合はCシートのBボタンだけを表示させるようにしたいのです。
もし可能であれば、ハイパーリンクをクリックした時以外は両ボタンとも非表示にする方法も知りたいです。
ご面倒をおかけ致しますが、よろしくお願い致します。
No.1
- 回答日時:
ボタンの表示を切り替え...もちろん可能ですが、シンプルにボタンは
1つにしてみては?
1. 以下のコードをそれぞれのモジュールにコピペします。
' // ■ ThisWorkbook モジュール
' // ハイパーリンク元のシートを参照しておくオブジェクト変数
Public gPrevSheet As Worksheet
' // ハイパーリンクがクリックされたとき発生するイベント
Private Sub Workbook_SheetFollowHyperlink( _
ByVal Sh As Object, _
ByVal Target As Hyperlink _
)
Set gPrevSheet = Sh
End Sub
' // ■ 標準モジュール
Sub GoBackSheet()
On Error Resume Next
ThisWorkbook.gPrevSheet.Activate
Set ThisWorkbook.gPrevSheet = Nothing
End Sub
2. C シートにボタンを配置し、キャプションを「戻る」にする
3. 2. のボタンにマクロ「GoBackSheet」を割り当てる
この回答への補足
早速のご解答ありがとうございます。
説明が足りなかったようですので補足致します。
CシートのAボタン、Bボタンはジャンプ元に戻るためのボタンではなく、それぞれに別のマクロが組まれています。
ですので、Aシートからジャンプして来た場合はCシートのAボタンだけを表示、Bシートからジャンプして来た場合はCシートのBボタンだけを表示させるようにしたいのです。
もし可能であれば、ハイパーリンクをクリックした時以外は両ボタンとも非表示にする方法も知りたいです。
ご面倒をおかけ致しますが、よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
- Excel(エクセル) ExcelのVBAコードについて教えてください。 1 2022/06/17 15:40
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/25 11:42
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) excel vba でユーザーフォーム入力ができない 2 2022/12/12 14:42
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel:コマンドボタンの移動
-
コマンドボタンを押すたびに大...
-
押したボタンの位置取得(共通の...
-
スクロールしてもボタンを常に...
-
エクセルVBA
-
エクセルのコマンドボタンの位...
-
Excel VBA --- コマンドボタ...
-
コマンドボタンで「終了ボタン...
-
ShowAllDataのエラーを回避したい
-
Wordでドラッグした文字列を括...
-
Accessユーザーフォームでコマ...
-
EXCELでNo.を変えて印刷したい
-
エクセルVBAでOptionButtonのオ...
-
Excel VBA 複数のコマンドボ...
-
マクロ コマンドボタンを押す...
-
エクセルでコマンドボタンを押...
-
Accessのコマンドボタンの立体...
-
条件に該当しない場合に、セル...
-
コマンドボタンがきかなくなる
-
コマンドボタンがあるかどうか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel:コマンドボタンの移動
-
コマンドボタンを押すたびに大...
-
スクロールしてもボタンを常に...
-
押したボタンの位置取得(共通の...
-
コマンドボタンがあるかどうか...
-
エクセルVBAでOptionButtonのオ...
-
エクセルVBA シート上にあるコ...
-
Excel VBA --- コマンドボタ...
-
エクセルVBA
-
Accessのコマンドボタンの立体...
-
コマンドボタンで「終了ボタン...
-
PPTのコマンドボタンがクリック...
-
EXCELでNo.を変えて印刷したい
-
エクセルのコマンドボタンの位...
-
ShowAllDataのエラーを回避したい
-
[ExcelVBA] コマンドボタンを押...
-
実行中の作業を中止させるコマンド
-
Wordでドラッグした文字列を括...
-
Accessユーザーフォームでコマ...
-
マクロ登録ボタンに色をつける
おすすめ情報