見出し画像

【Excel VBA】ブック内の全シートの選択セルをA1に変更するコード

目的

資料を提出する際、ブック内のすべてのシートをA1セルに移動させてから保存するのがマナーという人がいる。。。
手作業でやると地味に面倒で手間がかかる作業なので右クリックメニューに組み込んでみた。

完成コード

Option Explicit

Public Sub Create_RightClickMenu()
    
    'CommandBarタイプの種類を設定
    Dim CMB As Variant: CMB = Array("Cell", "Row", "Column")
    Dim RCM As CommandBar, CBB As CommandBarButton
    
    Dim I As Long
    For I = LBound(CMB) To UBound(CMB)
        
        '右クリックメニュー初期化(重複登録防止)
        Set RCM = Application.CommandBars(CMB(I)): RCM.Reset
        
        '右クリックメニューの追加
        Set CBB = RCM.Controls.Add(before:=1)
        CBB.Caption = "全シートA1に移動 (&A)"
        CBB.OnAction = "S_Select_AllWorksheet_A1Cell"
        
    Next I
    
End Sub

Public Sub Reset_RightClickMenu()

    Dim CMB As Variant: CMB = Array("Cell", "Row", "Column")
    
    Dim I As Long
    For I = LBound(CMB) To UBound(CMB)
        Application.CommandBars(CMB(I)).Reset
    Next I
    
End Sub

'**
'* ブック内のワークシートのセル番地をすべてA1に設定する
'**
Private Sub S_Select_AllWorksheet_A1Cell()
    
    '選択されているワークブック、ワークシートを変数に格納
    Dim WB As Workbook: Set WB = Selection.Parent.Parent
    Dim WS As Worksheet: Set WS = Selection.Parent
    
    'ループ処理で全てのワークシートをA1セルに移動処理
    Dim TmpWS As Worksheet
    For Each TmpWS In WB.Worksheets
        Application.Goto TmpWS.Range("A1")
    Next TmpWS
    
    '初期シートに戻る
    WS.Select
    
End Sub

いいなと思ったら応援しよう!