この記事では、VBAマクロで非表示シートを操作・処理・参照(非表示のまま計算等)する方法【SumFunction, ForEachSheet, RangeObjects】について解説していきます。
ポイントとしては、
SumFunctionと
ForEachSheet、
RangeObjects
を使用することです。
下記の解説では完全な初心者でもわかりやすいように、変数名を少々変わった名称にしています。
自身で活用する際には、これらを適切な英語表記に変更してご利用ください。
それでは詳しく見ていきましょう!
VBAマクロで非表示シートを操作・処理・参照する方法【非表示のままA列2行目から最終行目までの合計を求め、別のokシートに追記する】
それではまず、非表示のままA列2行目から最終行目までの合計を求め、別のokシートに追記する方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下のコードをコピペしましょう。
Sub SumHiddenSheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("隠れシート") ' 非表示シートの指定
Dim okSheet As Worksheet
Set okSheet = ThisWorkbook.Sheets("ok") ' 出力先のシート指定
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' A列の最終行を取得
Dim sum As Double
sum = Application.WorksheetFunction.Sum(ws.Range("A2:A" & lastRow)) ' 合計値を計算
okSheet.Cells(1, 1).Value = sum ' okシートに合計値を追記
End Sub
コードのAlt+F8を押し、マクロ選択画面でSumHiddenSheet関数を実行します。
このコードは、非表示のシート(この例では”隠れシート”)のA列2行目から最終行までのデータを合計し、その結果を別のシート(”ok”シート)に追記します。
最終行の取得には`End(xlUp)`を使用し、合計値の計算には`WorksheetFunction.Sum`を用いています。
VBAマクロで非表示シートを操作・処理・参照する方法【非表示シートすべてに対してA列2行目から最終行目までの合計を求め、別のokシートにシート名と同じ行に順番に追記する】
続いては、非表示シートすべてに対してA列2行目から最終行目までの合計を求め、別のokシートにシート名と同じ行に順番に追記する方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下のコードをコピペしましょう。
Sub SumAllHiddenSheets()
Dim ws As Worksheet
Dim okSheet As Worksheet
Set okSheet = ThisWorkbook.Sheets("ok") ' 出力先のシート指定
Dim i As Integer
i = 1 ' 行の初期化
For Each ws In ThisWorkbook.Sheets
If ws.Visible = xlSheet
Hidden Then ' 非表示シートのみ処理
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' A列の最終行を取得
Dim sum As Double
sum = Application.WorksheetFunction.Sum(ws.Range("A2:A" & lastRow)) ' 合計値を計算
okSheet.Cells(i, 1).Value = ws.Name ' シート名を記録
okSheet.Cells(i, 2).Value = sum ' 合計値を追記
i = i + 1 ' 行を進める
End If
Next ws
End Sub
コードのAlt+F8を押し、マクロ選択画面でSumAllHiddenSheets関数を実行します。
このコードは、ワークブック内のすべての非表示シートに対してA列2行目から最終行までの合計を計算し、その結果をokシートにシート名と共に追記します。
`For Each`ループを使い、シートが非表示であるかどうかを`If ws.Visible = xlSheetHidden`で判断しています。
まとめ VBAマクロで非表示シートを処理・参照(非表示のまま計算等)する方法【SumFunction, ForEachSheet, RangeObjects】
この記事では、VBAマクロで非表示シートを操作・処理・参照(非表示のまま計算等)する方法【SumFunction, ForEachSheet, RangeObjects】について解説しました。
マクロをマスターしてさらに快適に過ごしていきましょう!!(^^)/