【Excel 매크로】현재 열려 있는 모든 엑셀의 모든 Sheet의 액티브 셀을 A1로 한다【있으면 편리할지도 모른다】
변경 내역
Introduction
Excel 방안지 문제
설계서, 보고서, 메모 쓰기, 테스트 패턴을 자작하는, 매일 아침 체온 체크 기록,,,
현재는 레이와 2년 10월입니다만, Excel을 보지 않는 날은 없습니다.
세상의 모든 것이 Excel에서 돌고 있는지 착각하듯이 Excel을 매일 본다.
그러던 어느 날, 모든 엑셀의 시트가 좌상으로부터 시작되어 있으면 깨끗하다고 생각했습니다.
(가끔은 모르는 장소가 초기 표시되어 "???"가 될 수 있습니다)
그렇다면 모두가 적절한 도구 (Markdown 등)를 사용하면 좋을 것입니다.
그런 사람, 자동으로 할 수있는 것, 그물에 있는지 찾았습니다.
없었다.
정확하게는 중요한 것들이 없었습니다.
덧붙여 참고 링크는 이 기사의 말미에 정리하고 있습니다.
매크로(xlsm 파일)를 짜서, 자신(xlsm 파일)의 액티브 셀을 「A1」로 하는 것을 발견했습니다만,
선배, 상사, 과거의 위인이 만든 [네신 엑셀] 속에 매크로를 뿌리는 것은 조금 힘들다.
어디까지나,
을 달성하고 싶습니다.
Programming
이번에 작성한 매크로 유효 북과 동시에, 위치 조정을 걸고 싶은 엑셀 북을 기동합니다.
이 매크로를 시작하면 대화 상자가 나타납니다.
예를 누르면 실행, 아니오를 누르면 실행되지 않습니다.
처리 완료 후, 다음의 북에 대해서 다시 체크를 걸습니다.
사양
실행 내용
구현
버튼을 준비했습니다.
버튼(명칭
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
참고 정보
Reference
이 문제에 관하여(【Excel 매크로】현재 열려 있는 모든 엑셀의 모든 Sheet의 액티브 셀을 A1로 한다【있으면 편리할지도 모른다】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Takuro_K/items/a76399cf723fe0421c21텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)