• 締切済み

ExcelVBAで選択シートを真ん中にする

ExcelのVBAで、選択されているシートの前後を選択するマクロとして、下記のようなものを作成してメニューボタンに割り付けて使っています。で、質問は、選択されたシートがシート見出しの真ん中になるようにすることって出来ますか?どなたか?詳しい方いらっしゃったら教えてください。宜しくお願い致します。(シートの総数は100ぐらいはあります) Sub Sheet_Move_Right() On Error Resume Next ActiveSheet.Next.Select On Error GoTo 0 End Sub Sub Sheet_Move_Left() On Error Resume Next ActiveSheet.Previous.Select On Error GoTo 0 End Sub

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

何がどううまく行かないの? 何ができるかではなく 何をどうしたが、どううまく行かないのかが分らないと 回答の使用が無いけどね 因みに、補足の条件程度ならすべてクリアしていますよ 提示したマクロはイベントなので 何も考えずにthisworkbookモジュールへコピペしてごらん そして、マウスでシートタブを選択したり マクロでシートをselectしてみてごらんよ その上で分らないことなどを補足してね

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

こんな感じで 'thisworkbookモジュールへコピペ Private Sub Workbook_SheetActivate(ByVal Sh As Object) ActiveWindow.ScrollWorkbookTabs Position:=xlFirst ActiveWindow.ScrollWorkbookTabs Sheets:=Sh.Index - 5 End Sub 最後の行の「-5」をシートタブが希望の位置へ来るように変更してください 目安として、表示されているタブの半分の数値 10個のタブが表示されていれば「-4、-5、-6」辺りを設定 7個なら「-3、-4」位だと思います 参考まで

vba_minarai
質問者

補足

早速のご指導ありがとうございます。 たとえば、シート数が"Sheet1"~"Sheet200"まで、200枚ある場合にSheet50を、Worksheets("Sheet50").Select で選ぶとします。その時にシート見出しの中心に来るのでしょうか?使い方が判っていないせいか?うまく行きません! Selectを実行する前に、Sheet200を選んでいても、Sheet1を選んでいても?問題なく動きますか? 宜しくお願い致します。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

こんな感じかな? Sub Sheet_Move_Middle()  If Sheets.Count = 1 Then End  ActiveSheet.Move After:=Sheets(Int(Sheets.Count / 2)) End Sub

vba_minarai
質問者

補足

こんばんわ!! 説明が悪くてすみません。 総シート数の真ん中のシートの選択の方法ではなくって、任意のシートを選択すると選択されたシートが、シート見出しの中心に表示されるという意味です!!たとえばシートがSheet1~Sheet200まであったとすると、当然ディスプレイ上にSheet1~Sheet200まで一気に表示出来る訳ではないと思います。ディスプレイの解像度にもよると思いますが、せいぜい10シート分の表示が関の山だと思います。で、シート見出しに表示されている中で、選択シートが中心にくる方法を知りたいと思っています。まず、ディスプレイの解像度と、windowオブジェクトの関係を計算しないと駄目だと考えますが?あさはかな考えでしょうか?再度、ご指導のほど宜しくお願いいたします。

関連するQ&A