【Excel 매크로】현재 열려 있는 모든 엑셀의 모든 Sheet의 액티브 셀을 A1로 한다【있으면 편리할지도 모른다】

변경 내역


  • 초판 작성(2020/10/24)

  • Introduction



    Excel 방안지 문제



    설계서, 보고서, 메모 쓰기, 테스트 패턴을 자작하는, 매일 아침 체온 체크 기록,,,
    현재는 레이와 2년 10월입니다만, Excel을 보지 않는 날은 없습니다.
    세상의 모든 것이 Excel에서 돌고 있는지 착각하듯이 Excel을 매일 본다.

    그러던 어느 날, 모든 엑셀의 시트가 좌상으로부터 시작되어 있으면 깨끗하다고 ​​생각했습니다.
    (가끔은 모르는 장소가 초기 표시되어 "???"가 될 수 있습니다)

    그렇다면 모두가 적절한 도구 (Markdown 등)를 사용하면 좋을 것입니다.

    그런 사람, 자동으로 할 수있는 것, 그물에 있는지 찾았습니다.



    없었다.
    정확하게는 중요한 것들이 없었습니다.

    덧붙여 참고 링크는 이 기사의 말미에 정리하고 있습니다.

    매크로(xlsm 파일)를 짜서, 자신(xlsm 파일)의 액티브 셀을 「A1」로 하는 것을 발견했습니다만,
    선배, 상사, 과거의 위인이 만든 [네신 엑셀] 속에 매크로를 뿌리는 것은 조금 힘들다.

    어디까지나,
  • 완성된 xlsx 파일에 대해
  • 자신을 변경하지 않고
  • 외부에서 조금 만지기

  • 을 달성하고 싶습니다.

    Programming



    이번에 작성한 매크로 유효 북과 동시에, 위치 조정을 걸고 싶은 엑셀 북을 기동합니다.
    이 매크로를 시작하면 대화 상자가 나타납니다.



    예를 누르면 실행, 아니오를 누르면 실행되지 않습니다.
    처리 완료 후, 다음의 북에 대해서 다시 체크를 걸습니다.

    사양


  • 대상 : 본 매크로와 동시에 열려있는 모든 책

  • 실행 내용
  • 활성 셀을 "A1"로 이동
  • 표시 배율을 100%로 설정
  • 액티브 시트를 선두 (맨 왼쪽) 시트에? ← 필수 검증
  • 전체 책을 최대화 보기


  • 구현



  • 버튼을 준비했습니다.



  • 버튼(명칭 Button1 )을 누르면 FixAllBooks() 를 호출합니다.
    ''' *******************************************************
    ''' <summary>
    '''     ボタンをクリック時、各マクロを実行
    ''' </summary>
    ''' <remarks>
    '''     2020/10/24  初版
    ''' </remarks>
    ''' *******************************************************
    
    ''' *******************************************************
    ''' <summary>
    '''     開いている全ブックに対し、
    '''     全シートのアクティブセルを「A1」に設定し、表示倍率を100%とする。
    ''' </summary>
    ''' *******************************************************
    Sub Button1_Click()
        Call FixAllBooks
    End Sub
    
  • FixAllBooks()FixAllSheets() 를 부르고, 그것은 FixCellPosition() 를 부릅니다.
    ''' ********************************************************************************
    ''' <summary>
    '''     開いている全ブックに対し、
    '''     全シートのアクティブセルを「A1」に設定し、表示倍率を100%とする。
    ''' </summary>
    ''' <remarks>
    '''     開いているブックを検知し、各ブックに対して『FixAllSheets()』を実行
    '''
    '''     2020/10/04  初版
    ''' </remarks>
    ''' ********************************************************************************
    Sub FixAllBooks()
      Dim message As String
      Dim rtn As Integer
    
      ' 画面更新の停止
      Application.ScreenUpdating = False
    
      For Each book In Workbooks
        message = "『" & book.Name & "』" & vbCrLf _
                    & vbCrLf _
                    & "の全シートについて、" & vbCrLf _
                    & "アクティブセルをA1セルへ設定し、表示倍率を100%とします。"
    
        rtn = MsgBox(message, vbYesNo)
    
        If rtn = vbYes Then
            ' マクロ実行
            book.Activate ' 現在処理中のブックをアクティブに
            Call FixAllSheets
            ActiveWindow.WindowState = xlMaximized  'Excelを最大化
    
            MsgBox ("実行しました。")
        End If
    
      Next
    
      ' 画面更新の再開
      Application.ScreenUpdating = True
    End Sub
    
    ''' --------------------------------------------------------------------------------
    ''' <summary>
    '''     アクティブなブックに対し、各シートに対して『FixCellPosition()』を実行
    ''' </summary>
    ''' --------------------------------------------------------------------------------
    Sub FixAllSheets()
    
        Dim sht                     As Worksheet            '// 処理中のワークシート
        Dim shtVisible                                      '// 表示可能なワークシート
        Dim iRow, iCol                                      '// 縦、横座標
        Dim sHiddenSheet                                    '// 非表示シート名
        Dim oFilterStatus           As AutoFilter           '// オートフィルタ状態
        Dim oRangeFilter            As Range                '// オートフィルタ設定
    
        For Each sht In Worksheets
            If (IsEmpty(shtVisible) = True) And (sht.Visible = xlSheetVisible) Then
                Set shtVisible = sht
            End If
    
            '// シートが表示されている場合
            If sht.Visible = xlSheetVisible Then
                Call FixCellPosition(sht)
            '// シートが非表示の場合
            Else
                sHiddenSheet = sHiddenSheet & "、" & sht.Name
                sht.Visible = xlSheetVisible
                Call FixCellPosition(sht)
                sht.Visible = xlSheetHidden
            End If
        Next
    
        shtVisible.Select
    
        If (sHiddenSheet <> "") Then
            MsgBox sHiddenSheet, vbOKOnly, "非表示シートあり"
        End If
    End Sub
    
    ''' --------------------------------------------------------------------------------
    ''' <summary>
    '''     現在のシートに対し、アクティブセルを「A1」に設定して表示倍率を100%とする。
    ''' </summary>
    ''' --------------------------------------------------------------------------------
    Sub FixCellPosition(ByVal sht As Worksheet)
            sht.Select
    
            '// ウインドウ枠の固定がされている場合
            If ActiveWindow.FreezePanes = True Then
                iRow = ActiveWindow.SplitRow + 1
                iCol = ActiveWindow.SplitColumn + 1
                Cells(iRow + 1, iCol + 1).Activate
            End If
    
            Set oFilterStatus = sht.AutoFilter
            '// オートフィルタが設定されている場合
            If Not oFilterStatus Is Nothing Then
                '// フィルタが掛かっている場合
                If oFilterStatus.FilterMode = True Then
                    '// フィルタが掛かっている行の先頭を選択
                    Set oRangeFilter = Range("A1").CurrentRegion
                    Set oRangeFilter = Application.Intersect(oRangeFilter, oRangeFilter.Offset(1, 0))
                    Set oRangeFilter = oRangeFilter.SpecialCells(xlCellTypeVisible)
                    Range("A" & CStr(oRangeFilter.Row)).Select
                End If
            End If
    
            sht.Range("A1").Select
            ActiveWindow.Zoom = 100
    
            ActiveCell.Activate         ' Excel97対策
            ' スクロール列の設定
            ActiveWindow.ScrollColumn = 1
            ' スクロール行の設定
            ActiveWindow.ScrollRow = 1
    End Sub
    

  • 참고 정보


  • 모든 시트의 커서를 A1로 이동하는 매크로
  • 열려있는 모든 파일 이름과 통합 문서 이름을 얻는 Excel 매크로
  • VBA 통합 문서 활성화
  • VBA에서 창 표시를 최대화하고 최소화합니다.
  • 좋은 웹페이지 즐겨찾기