トップ > 汎用コード > 数式情報を一覧化

数式情報を一覧化2023.05.26

アクティブブックの全ワークシートの数式情報を調べ、新規ブックに一覧を作成するマクロです。

マクロ「ExampleOfUse_GetInformationAboutFormulas」を実行すると、アクティブブックの全シートの数式情報(シート名、セルアドレス、数式、値、書式)を調べ、新規ブックに一覧を作成します。
シートが保護されていると数式の情報を取得できませんので、マクロを実行する場合には予めシートの保護を解除しておいてください。

■参考動画 (動画内の氏名や点数は全てダミーデータです)


【お薦め】マクロ・プロシージャを管理する無料のツール!
 Excelマクロ管理ツール

サンプルコード2023.05.26

コードの貼り付け場所

'---------------------------------------------------------------------------
' アクティブブックの全ワークシートの数式情報を調べ新規ブックに一覧表示
'---------------------------------------------------------------------------
Sub ExampleOfUse_GetInformationAboutFormulas()

    Application.ScreenUpdating = False
    
    'アクティブブックを変数に設定
    Dim actWB As Workbook
    Set actWB = ActiveWorkbook
    
    '新規ブックを追加
    With Workbooks.Add.Worksheets(1)
        '見出し作成・列表示形式設定
        With .Range("A1:E1")
            .Value = Array("シート名", "セルアドレス", "数式", "値", "書式")
            .Interior.ThemeColor = xlThemeColorAccent5
            .Interior.TintAndShade = 0.799981688894314
            .EntireColumn.NumberFormatLocal = "@"
        End With
        
        'アクティブブックの各シートの数式情報を取得
        Dim Sh        As Worksheet
        Dim varInfo   As Variant
        Dim rngTarget As Range
        For Each Sh In actWB.Worksheets
            '起点セル設定
            Set rngTarget = .Cells(Rows.Count, "A").End(xlUp).Offset(1)
            '数式情報を取得
            varInfo = GetInformationAboutFormulas(Sh)
            If IsArray(varInfo) Then
                '数式情報を取得できれば情報を起点セルから設定
                rngTarget.Resize(UBound(varInfo), 5) = varInfo
            Else
                'エラーの場合は内容を起点セルに表示
                rngTarget.Value = varInfo
            End If
        Next
        
        '罫線
        .UsedRange.Borders.LineStyle = xlContinuous
        
        '列幅調整
        .Columns("B:B").AutoFit
        .Columns("C:C").ColumnWidth = 60
        .Columns("D:D").ColumnWidth = 30
        .Columns("E:E").AutoFit
    End With
    
    Application.ScreenUpdating = True
    
    MsgBox "結果を出力しました", vbInformation
End Sub

'---------------------------------------------------------------- ' 指定したシートの数式に関する情報を2次元配列として取得する関数 '---------------------------------------------------------------- '[引数] ' Sh :対象のワークシート '[戻り値] ' 成功:2次元配列 ' 行方向:取得セル件数 ' 列方向:シート名,セルアドレス, 数式, 値, 書式 ' 失敗:文字列(エラーメッセージ) '[作成日] ' 2023/05/26 ' https://excel.syogyoumujou.com/vba/getinfoaboutformulas.html '---------------------------------------------------------------- Function GetInformationAboutFormulas(ByRef Sh As Worksheet) As Variant 'シート保護確認 If Sh.ProtectContents Then GetInformationAboutFormulas = "シート [" & Sh.Name & "]は保護されています" Exit Function End If '数式セルの取得 Dim rngFormula As Range On Error Resume Next Set rngFormula = Sh.Cells.SpecialCells(xlCellTypeFormulas, 23) Err.Clear On Error GoTo 0 If rngFormula Is Nothing Then GetInformationAboutFormulas = "シート[" & Sh.Name & "]に数式のセルはありません" Exit Function End If '数式情報の取得 On Error GoTo ERROR_HANDLER Dim c As Long Dim rng As Range ReDim varInfo(1 To rngFormula.Cells.Count, 1 To 5) For Each rng In rngFormula If rng.Formula <> "" Then '結合セルは最左上のセル以外数式は空欄となる c = c + 1 varInfo(c, 1) = rng.Parent.Name 'シート名 varInfo(c, 2) = rng.Address(0, 0) 'セルアドレス varInfo(c, 3) = rng.Formula '数式 varInfo(c, 4) = rng.Value '値 varInfo(c, 5) = rng.NumberFormatLocal '書式 End If Next On Error GoTo 0 GetInformationAboutFormulas = varInfo Exit Function ERROR_HANDLER: GetInformationAboutFormulas = "シート[" & Sh.Name & "] 想定外のエラー" End Function

ページトップへ戻る

Excel 汎用コード

Copyright(C) 2009- 坂江 保 All Rights Reserved.