4

Excel では、空のセルへの参照を含む数式を見つけることができます。

例えば

A1 = 1

B1 = 空

C1 = .5

D1 = A1 + B1 + C1

D1 は値が 1.5 になるように正しく計算しますが、エラー チェックにより数式 D1 にエラーがあることが識別され、このセルに矢印が描画されます。

空のセルへの参照がある場合は、ユーザーに警告する必要があります。

この機能を使用して自分自身を記録しようとすると、これが表示されます

With Application.ErrorCheckingOptions
    .EvaluateToError = False
    .TextDate = False
    .NumberAsText = False
    .InconsistentFormula = False
    .OmittedCells = False
    .UnlockedFormulaCells = False
    .ListDataValidation = False
    .InconsistentTableFormula = False
End With

ActiveSheet.ClearArrows

空のセルのみをチェックするオプションは正しく設定されていますが、「トレース」機能の実際の実行は完全に無視されます。これを自動的に発生させ、テストの結果を確認する方法はありますか?

機能は「数式タブ」「エラーチェック」「空セルを参照する数式」「空セルのトレース」

4

3 に答える 3

1

空のセルを参照する数式をチェックする VBA メソッドを次に示します。これにより、それがどの数式であるかだけでなく、どのセルが空であるかがわかります。

これをテストするには、シート 1 のセル A1 にこの数式を入力します。

=F1+G1+H1

H1 を空のままにして、F1 と G1 を埋める

セル A5 に、この式を入力します。

=A1*D5

セル D5 を空のままにします。

このコードをモジュールに貼り付けます。

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim RngFormulas As Range, fCell As Range, _
    DPrcd As Range, aCell As Range

    Set ws = Sheets("Sheet1")

    With ws
        On Error Resume Next
        Set RngFormulas = .Cells.SpecialCells(xlCellTypeFormulas)
        On Error GoTo 0

        If Not RngFormulas Is Nothing Then
            For Each fCell In RngFormulas
                On Error Resume Next
                Set DPrcd = fCell.DirectPrecedents
                On Error GoTo 0
                If Not DPrcd Is Nothing Then
                    For Each aCell In DPrcd
                        If IsEmpty(aCell.Value) Then
                            Debug.Print aCell.Address & " in " & _
                            fCell.Formula & " is empty"
                        End If
                    Next
                End If
            Next
        End If
    End With
End Sub

マクロを実行すると、即時ウィンドウに出力が表示されます。

スナップショット

ここに画像の説明を入力

于 2012-07-02T19:54:22.113 に答える
0

大きなスプレッドシートのすべてのページで [式] > [エラー チェック] を実行したかったのですが、それを実行するための VBA コードも見つかりませんでした。

私が思いついた最善の方法は、Goto > Special を使用してエラーを選択することでした。これには、エラーが見つからない場合に発生するエラーを無視するエラー処理が必要です (#N/A 定数では機能しません)。

Dim r As Range

On Error Resume Next
Set r = ActiveCell.SpecialCells(xlCellTypeFormulas, xlErrors)
If Err.Number <> 0 And Err.Number <> 1004 Then Stop
On Error GoTo 0
If Not r Is Nothing Then
    If r.Count > 0 Then
        r.Select
    End If
End If

1004「セルが見つかりませんでした。」以外のエラーの場合。が発生した場合、マクロを壊す以上の対応はしていません。

于 2012-10-18T07:03:45.673 に答える
0

=IF(COUNTA(A1:A3),"ok","error") を試して配列内の空白を見つけてください。それが成功した場合は、他に必要なことは何でもできます。

于 2012-07-02T19:54:43.770 に答える