- ベストアンサー
スクロールしてもボタンを常に表示させたい。Excel2002
イントラ掲出用の社員向けのマニュアルを作成しております。 ・30シート程度に分かれており、メインページからその30シートにジャンプできるようハイパーリンクの設定をしています。 テスト版を掲出したところ、すぐにメインページに戻れなくて不便だとの意見が出ました。シートタブをクリックすればそんなに手間をかけず移動できるとは思うのですがExcelの操作に不慣れな方も多く、とても簡単な方法を探しています。 そこでボタンを作成し、マクロの記録でマクロを登録し、ボタンをクリックすればメインページに戻れるようにしたいと思ってます。ただ縦や横に長いシートもあり、スクロールしても常に画面上に「戻るボタン」が表示されていればなお便利なのではと思ってます。 ウインド枠の固定もしくは画面分割で対応できるとは思いますが、見た目のスマートさから、ボタンが常に表示される方法が望ましいんですが、そんな事はできるのでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。#4 Wendy02です。 1. # 特定のブックのみに現れるメニューのところに置くボタン(コマンドボタン) 一般的に、マクロを使わない方法としては、ボタンをブックにコピーして貼り付けます。しかし、それをされると、ブックをクローズしても、残るので、私は不愉快な気分になります。わたし流は、やはりマクロで付けます。 2. >「画面の移動に付いて来るワークシートの中のボタンを使っています。」とありますがこれはVBAで作られたものなのでしょうか? マクロです。いわゆる「どこでもボタン」です。 それぞれテクニックを公開します。 <標準モジュール> Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、コードを貼り付けます。 <ThisWorkbook> Visual Basic Editor 画面の左上側にプロジェクト(エクスプローラ)窓があります。その中に、ThisWorkbook をダブルクリックして現れる画面です。 1. '<標準モジュールに設定します。> '-------------------------------------------- Private Sub AddMenu() With Application.CommandBars("Worksheet Menu Bar") On Error Resume Next .Controls("メインシート(&B)").Delete On Error GoTo 0 With .Controls.Add(Type:=msoControlButton, Temporary:=True) .Caption = "メインシート(&B)" .OnAction = "GoToMain" .FaceId = 2073 '家の形の色付きのアイコン .TooltipText = "メインシートに飛びます" .Style = msoButtonIconAndCaption .Visible = True End With End With End Sub Private Sub GotoMain() 'メインシートに飛ぶ Worksheets(_______)の中に入れる Application.Goto Worksheets("Sheet1").Range("A1") End Sub Sub Auto_Open() 'オープンと同時にメニュー設定 Call AddMenu End Sub Sub Auto_Close() 'このブックを閉じるとメニューも消える With Application.CommandBars("Worksheet Menu Bar") On Error Resume Next .Controls("メインシート(&B)").Delete On Error GoTo 0 End With End Sub '-------------------------------------------- Worksheets("Sheet1")のカッコの中に実際のシート名を書き換えてください。 2. '<ThisWorkbookモジュール> '----------------------------------- Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim myBtn As Object, WinTop As Double, WinLeft As Double On Error GoTo EndLine Set myBtn = Sh.Shapes("ボタン 1") If myBtn Is Nothing Then Exit Sub WinTop = ActiveWindow.VisibleRange.Top WinLeft = ActiveWindow.VisibleRange.Left With myBtn .Top = WinTop + 10 '上から .Left = WinLeft + 550 '左から(右までで全部で650ぐらい) End With EndLine: End Sub '----------------------------------- これは、シートにボタン(フォームツールで作ったもの)があれば、そのボタンが、シートの移動と共についていく、というものです。位置は、「上からと左から」で、お好きに数字を調整してください。 一味違うマクロかな(^^;
その他の回答 (6)
- taocat
- ベストアンサー率61% (191/310)
またまたこんにちは。 No.2です。 言い忘れたことがありますので一言。 「Web」ツールバーは質問のブックでしか使わないでしょうから、別のブックを使うときは非表示にしておかないと邪魔になりますね。 ということで、ThisWorkBookモジュールに以下のコードを書いておく。 '--------------------------------------------- 'ブックを開いた時に「Web」ツールバーを表示 '--------------------------------------------- Private Sub Workbook_Open() Application.CommandBars("Web").Visible = True End Sub '------------------------------------------------- 'ブックを閉じる時に「Web」ルールバーを非表示 '-------------------------------------------------- Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.CommandBars("Web").Visible = False End Sub ------------------------------------------- 以上です。
お礼
はいそうなんです。私のPCの設定を変更すれば色々と便利な方法もあるのですが、他のPCの操作に不慣れな社員の方にでも対応できる方法を色々と探しておりました。この方法ですと上手に対応できそうです。とっても便利な方法をご教授下さいましてありがとうございました。
- hana-hana3
- ベストアンサー率31% (4940/15541)
>他の社員の方には見えないですよね? マクロでコマンドバーを作成すると、任意の位置に置くことが出来ます。 標準モジュールに下記を貼付けます Sub cBarSetup() Call cBarDel 'コマンドバー名の変更は "いどうぼたん" と書かれた3カ所を同じ名前にしてください。 With Application.CommandBars.Add(Name:="いどうぼたん", Position:=msoBarFloating) 'Caption = "name" でボタン名を修正できます。 'OnAction = "macro" で実行するマクロを指定。 With .Controls.Add(Type:=msoControlButton) .Caption = "目次" .OnAction = "Jump4Main" .Style = msoButtonCaption End With With .Controls.Add(Type:=msoControlButton) .BeginGroup = True .Caption = "Top" .OnAction = "Jump4Top" .Style = msoButtonCaption End With End With Application.CommandBars("いどうぼたん").Visible = True End Sub Sub cBarDel() On Error Resume Next 'コマンドバーの削除 Application.CommandBars("いどうぼたん").Delete On Error GoTo 0 End Sub Sub Jump4Main() 'メニューページ設定 ThisWorkbook.Sheets("Main").Select 'ActiveWindow.ScrollColumn = 1 'ActiveWindow.ScrollRow = 1 End Sub Sub Jump4Top() '解説ページのトップ位置 ThisWorkbook.Activate ActiveWindow.ScrollColumn = 1 ActiveWindow.ScrollRow = 1 End Sub そして、Thisworkbook モジュールに下記を。 Private Sub Workbook_Open() Call cBarSetup End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Call cBarDel End Sub これで、起動時にボタンが追加され、終了時にはボタンが削除されます。 ボタン名等は修正して使ってください。
お礼
こんな方法でボタンをつくることができるのですね。 大変勉強になりました。 ご連絡が遅くなり大変失礼しましたが、ご回答本当にありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ウィンドウ枠固定で、画面分割しているなら、上側のウィンドウに入れてあれば、いつも、そこにあるのだから良いような気がしますが。 私自身は、画面分割をしないので、画面の移動に付いて来るワークシートの中のボタンを使っています。でも、シートは1つだけで、同じものを各シートにつけるようなことはしませんね。 ボタンの種類は大きくわけると3つになります。 フォームのボタン コントロールツールのボタン 特定のブックのみに現れるメニューのところに置くボタン(コマンドボタン) 30シートもあるのでしたら、#1さんのおっしゃるように、メニューに、「メインページ」と文字かボタン(ツールアイコン)が出ていたほうが良いような気もしてきますね。
補足
ご回答どうもありがとうございます。 色々とやっていたら#1の方が言われている機能がわかりました。ただこれは私のPCのエクセルではツールバーにユーザー設定ボタンを追加することができたのですが、他の社員の方には見えないですよね? また「画面の移動に付いて来るワークシートの中のボタンを使っています。」とありますがこれはVBAで作られたものなのでしょうか?誠に恐縮ですが、ご参考までにご教授いただければと思います。
- komet163
- ベストアンサー率51% (22/43)
こんにちは。 ハイパーリンクでジャンプしているなら、 「Web」ツールバーの『←戻る』で、 ジャンプ元(この場合メインページ)に戻ります。 「Web」ツールバーは、 [表示]メニュー → [ツールバー] → [Web] で 表示できます。
お礼
ご回答どうもありがとうございます。 参考にさせていただきます。
- taocat
- ベストアンサー率61% (191/310)
こんにちは。 一番簡単な方法は、「Web」ツールバーを表示しておくことです。 「Web」ツールバーには、IEと同じ戻るボタンがついてますのでそれをクリックすると元のシートへ戻ります。 メニューバーの「表示」>「ツールバー」>「Web」ツールバー 以上です。
お礼
ご回答どうもありがとうございました。 参考にさせて頂きます。 この方法がわかりやすそうです。 ありがとうございました。
- galoon
- ベストアンサー率28% (38/133)
戻り先がトップページだけならツールバーにユーザーボタンを配置してマクロに割り当てておけばシート上ではないですが常にアクセスできるものとなりますがいかがでしょう。 また、VBAが使用できるのであればユーザーフォームをモーダレス表示するというのも一つの手段だと思います。 ※マクロを無効にされるとお手上げですが・・・。
お礼
自分で補足説明しておきながら恐縮ですが、色々と操作していたらユザー設定ボタンを追加することができました。どうもありがとうございました。
補足
早速のご回答ありがとうございます。 戻り先はトップページのみです。 「ツールバーにユーザーボタンを配置して」とありますが、これはどうやれば良いのでしょうか? ヘルプで検索しても、意味がわかりませんとの返答でした。いままで聞いたことのない機能で、重ねてのご質問で大変恐縮なのですが、よろしくお願いします。
お礼
こんな便利なボタンをつくることができるんですね。 大変勉強になりました。 この方法で対応しようかと思っております。 ご回答心より感謝申し上げます。