Excel

【Excel】VBAマクロで非表示シートを操作・処理・参照(非表示のまま計算等)する方法【SumFunction, ForEachSheet, RangeObjects】

当サイトでは記事内に広告を含みます

この記事では、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】について解説しました。

マクロをマスターしてさらに快適に過ごしていきましょう!!(^^)/