2

「#REF!」を検索する単純なマクロを完成させようとしています。ユーザーが行を変更し、基になる数式を台無しにしたため、ワークシートで。

私は見つけた限り持っています:

Sheets("Location_Multiple").Select
Range("A1:AL10000").Select

Selection.Find(What:="#REF!", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

私が理解していることから、Ifパラメータがtrueの場合に入力する必要があります

MsgBox"Please go back and check...."

if の後に何が続くかわかりません....

任意のポインタは非常に高く評価されます。

4

3 に答える 3

5

以下のコードを試してください

Sub DisplayError()

On Error Resume Next
Dim rng As Range
Set rng = Sheets("Location_Multiple").Range("A1:AL10000")

Dim rngError As Range
Set rngError = rng.SpecialCells(xlCellTypeFormulas, xlErrors)

If Not rngError Is Nothing Then
    For Each cell In rngError
        MsgBox "Please go back and check.... " & cell.Address
    Next
End If
End Sub
于 2013-09-26T09:49:45.857 に答える
1

LookInこれを使用して、引数をxlValuesの代わりに に変更しxlFormulasます。

Selection.Find(What:="#REF!", After:=ActiveCell, LookIn:=xlValues, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

少しクリーンな実装の場合:

Dim sht as Worksheet
Dim rngSrch as Range
Dim rngErr as Range

Set sht = Sheets("Location_Multiple")
Set rngSrch = sht.Range("A1:AL10000")

Set rngErr = rngSearch.Find(What:="#REF!", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)

If Not rngErr Is Nothing Then
    'Do something to the offending cell, like, highlight it:
    rngErr.Interior.ColorIndex = 39
End If

このようなエラーのあるセルが複数ある可能性があると予想すると、おそらくループ.Find内に実装する必要があります。Do...WhileSO には、そのような問題の例がいくつかあります。ループの実装に問題がある場合は、お知らせください。

于 2013-09-26T14:14:00.393 に答える