- ベストアンサー
マクロ 各シートからシート1に戻るボタンを設置する
- 各シートの同じ位置に「シート1に戻る」ボタンを付けるマクロを実行したいです。
- 2枚目以降のシートから、シートが終わるまで、各シートにボタンを設置するマクロがわかりません。
- 「戻る」という言葉をどこに入れてよいかもわからりません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 参考までに、その後に思いついたものを、記します。 出来れば、見出しを選択したいだけのためなら、ボタンをシートに張り付けるのは賛成でないので。 ーー 一番左に目次的なシートを作って配置しておけば、 シート画面の一番下の(シート名タブの左の)◀と▶の、◀を「CTRLキーを押しながらクリックする」と 一番左に移動するようだ。 VBAなどでボタン化する必要はないのでは。 ーー マクロの記録では Sub Macro1() ActiveWindow.ScrollWorkbookTabs Sheets:=-15 End Sub のようになる。マイナスは左移動のようなので、 ActiveWindow.ScrollWorkbookTabs Sheets:=-Worksheets.Countも可能のようだ。 ーー 見出しシートをいつも一番左に持ってくるのは Sub test01() Worksheets("見出し").Move Before:=Worksheets(1) End Sub ブックを開いた最初などに、このステップを入れておくと、見出しシートのTAB位置が、再左の位置になる。 ーー ほかに見出しシートのTABの色を目立つように変えておくと使いやすいかも。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルを使っての課題解決のためには (1)構想・仕組み・発想を決める段階・ステップ (2)関数や、VBAコードを考える・判らなければ学ぶ段階 初学者だと(1)の段階で、自分が思いついた(またはそれしか知らない)発想になってしまう場合が多い。 どんな分野の課題解決でもそうだろう。 本当は質問に、現状(や今後作る)「データ」と、「したいこと」(できれば「結果データ」も)を「文章で!!」書いて、経験豊富な(という前提の)回答者のアイデアを回答してもらって、それを学ぶべきだと思う。相当に学が進んでもこの心がけは必要と思う。 ーーー 最初の質問をみて、回答者の回答コードが出て、早々と締め切っているのを見て、その後、これを判っただけで、どうするのだろうと思った。案の定この質問がでた。 (余談。私の個人経験から、質問者は、お礼はすぐしても、回答の締め切りは、土日を挟む3日ぐらいおいておくのが、他のよい回答がつくかもしれず、よいように思う。) たくさんコントロールを張り付けた場合、同質のイベントの処理の場合が多く、「クラス」という仕組みを使ったり、コントロール配列などという、VBAとして高等な課題に直面することが多いようだ。前問では、どういう使い方をするかも書いておらず、質問者には判っているのかな、と思っていた。 ーー 1枚目(Sheet1とする)のシート(目次的なシートなら)には、「目次シート」などをシート名にして、シートタブをクリックすればすむ。 シートが沢山あってSheet1のタブが出ていない場合は、シートタブ上で、「右クリック」、「移動またはコピー」「Sheet1をクリック」で済む話。 ーー これで満足しないなら、VBAの話だが、各ボタンのクリックイベントに (ボタン5はシートと場合で変わる) Sub ボタン5_Click() Sheets("Sheet1").Activate Range("A1").Select End Sub すべてのシートのボタンのイベント・プロシージュアーについてこれを入れる必要がある。 これをしないで達成するやり方(前述)は初心者の域でない。 各ボタンのクリックイベントのほかにも、使えそうだが。 そもそも初心者がイベントをつかうのは経験から無理があると思う。 また質問者以外の人にこのブックを使ってもらおうとする場合は、よほどVBAに上達してからにしたほうがよい。使用者の制限、シートの保護や、誤り入力や、余分な入力への対抗、VBA作成者の不十分や誤りの対応が大変だから。これらはプロに任せるべき。
お礼
ご回答ありがとうございます。 私自身初めてのマクロであること、また、仕事の関係で急いで作らなくてはならない という点から、稚拙な質問ばかりで大変失礼いたしました。 本来なら、1からきちんと学び質問するべきなのですが、マクロをマスターしたいわけではなく、 「日頃マクロでの作業を行っている上司の代わりに今回のみマクロを作成する」 といった状況なので、時間が一番に優先されます。 今回私が作ったブックは、マクロ経験者の上司が扱うため、問題はないと思います。 ご心配いただき、ありがとうございます。 質問の仕方もご指摘いただき、大変参考になりました。 すべてをふまえ、ありがとうございます。
- dogs_cats
- ベストアンサー率38% (278/717)
一番左にあるシート以外にボタンを設置する方法の一例です。 各シートで複数ボタン作成するのですか?for~next使用するようですが。 必要箇所を修正下さい。 Sub 戻るボタン設置() Dim Sht As Worksheet Dim Sht As Worksheet For Each Sht In Worksheets If Not Sht.Name = Worksheets(1).Name Then With Sht For i = 1 To 1 '幅140、高さ20のボタンを追加 .Buttons.Add(145 * i, 120, 140, 20).Text = i Next i End With End If Next Sht End Sub VBAで作業後にシート1に戻りたいのならコードで戻れば済む話しですが、 シート毎にボタン配置が本当に必要なのか考えた方が良いと思いますが。
お礼
無事作業することができました。 ご回答ありがとうございます!
お礼
ご丁寧にご回答いただき、ありがとうございます。 今回、マクロの作業の指示をくださった上司から、 「戻るボタンを付けるように」という指示でしたので、 このような質問をさせていただきました。 今回教えていただいたことは、今後の参考にさせていただきます。 ご回答本当にありがとうございます。