プロが教えるわが家の防犯対策術!

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

A 回答 (3件)

何がどううまく行かないの?


何ができるかではなく
何をどうしたが、どううまく行かないのかが分らないと
回答の使用が無いけどね

因みに、補足の条件程度ならすべてクリアしていますよ

提示したマクロはイベントなので
何も考えずにthisworkbookモジュールへコピペしてごらん
そして、マウスでシートタブを選択したり
マクロでシートをselectしてみてごらんよ
その上で分らないことなどを補足してね
    • good
    • 0

こんな感じで



'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」位だと思います

参考まで

この回答への補足

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

補足日時:2010/03/02 17:00
    • good
    • 0

こんな感じかな?



Sub Sheet_Move_Middle()
 If Sheets.Count = 1 Then End
 ActiveSheet.Move After:=Sheets(Int(Sheets.Count / 2))
End Sub

この回答への補足

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

補足日時:2010/03/01 22:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!