Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2013)
特定のシートを常時見える位置に固定
投稿日時: 18/03/29 18:17:39
投稿者: okabe

同じブック内で、大量にシートがありますが、それらの情報をまとめたシートがあり、
いつも見える位置に表示させたいです。
 
標準だと、シートをスクロール移動していると、そのまとめシートが見えなくなり
そのシートをまた探して戻るのが非効率な作業となっています。
 
Web上で以下特定のシートを場所をコードを紹介しているところがあり、
試しましたが、動きません。
 
シート名は、"Main"としていますが、以下コードのSheets(1)をSheets("Main")と変えても
駄目でした。
 
原因がわかる方がいらっしゃいましたらご教授頂きたく宜しくお願い致します。
 
-----------------------------------------------------------------
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim sc As Long ' count of sheets
    Dim NewPos As Long ' index of serlected sheet
 
    Application.EnableEvents = False
    Application.ScreenUpdating = False
 
    If ActiveSheet.Index <> 1 Then
        sc = Sheets.Count
        NewPos = ActiveSheet.Index
        For i = 2 To NewPos - 1
            Sheets(2).Move After:=Sheets(sc)
        Next i
        Sheets(1).Activate
        Sheets(2).Activate
    End If
 
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

回答
投稿日時: 18/03/29 20:16:54
投稿者: 隠居じーさん

ThisWorkbookモジュールに貼り付けされましたでしょうか。
変数iが宣言されていないようです。

回答
投稿日時: 18/03/29 21:29:03
投稿者: WinArrow
投稿者のウェブサイトに移動

いくつか質問します。
  
 (1)このコードは、どのモジュールに記述されていますか?
  
 (2)このコードが、動かないとかかれていますが、
  その状況を詳細に説明できますか?
  変数「i」が定義されていないため、コンパイルエラーになる・・・とか
  
 (3)このコードは、どのような動きをするはずか?
  わかっていますか?
 
(4)ステップ実行してみましたか?

回答
投稿日時: 18/03/29 22:00:08
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
標準だと、シートをスクロール移動していると、そのまとめシートが見えなくなり

>シートをスクロール移動
とは、どのようなことでしょうか?
 
引用:
そのシートをまた探して戻るのが非効率な作業となっています。

 
"Main"というシートをいつも左側に「おいておけば、
左下のシート切替ボタン(横向き▶が4つ並んでいる)の最左ボタンをクリックするだけで
1番目のシートをアクティブにすることができます。

回答
投稿日時: 18/03/30 08:48:29
投稿者: Suzu

okabe さんの引用:
同じブック内で、大量にシートがありますが、それらの情報をまとめたシートがあり、
いつも見える位置に表示させたいです。
 
標準だと、シートをスクロール移動していると、そのまとめシートが見えなくなり
そのシートをまた探して戻るのが非効率な作業となっています。

 
目的が、そのシートの内容を常に見える状態にしたい。
で代用できるのであれば、
「表示」-「新しいウィンドウを開く」で そのブックのクローンウィンドウを作成し、
あとは並べて表示させれば、
 
1ウィンドでは、まとめシートを表示、もう1ウィンドウで別シートを表示 という事ができます。
 
これでは 目的を達せませんか?

回答
投稿日時: 18/03/30 10:53:05
投稿者: bi

すみませんが回答ではありません。
 

        For i = 2 To NewPos - 1
            Sheets(2).Move After:=Sheets(sc)
        Next i 

このFor〜Nextは何の意味があるのでしょうか?iが入っている箇所がありませんし。

投稿日時: 18/03/30 14:29:52
投稿者: okabe

各位
 
本件アドバイス頂きありがとうございました。
変数「i」について、コードの意味を読み解けませんが、
ステップ実行したら、一番目のシートを固定することが出来ました。
ただ、処理が重くなりすぎるため、実用に耐えません。
 
Suzu様から頂いた方法で、目的を達することが出来ました。
ありがとうございます。
 
>>>
「表示」-「新しいウィンドウを開く」で そのブックのクローンウィンドウを作成し、
あとは並べて表示
 
VBAの内容として続けて良いか分からないため、
一旦解決済みとさせて頂きます。
 
改めてアドバイス頂きありがとうございました。