3
votes

I think Excel is going senile.

For the life of me, I can't get my Excel VBA macro to ignore a "Number Stored as Text" error.

In cell C71 on a worksheet called "Main," I have the value 6135413313, which Excel is warning is a number stored as text. And it should be. But I want to remove that annoying little triangle at the end of my macro.

I've reduced my macro code to the bare bones for testing purposes, but that triangle still persists. Here's my macro:

Sub test()
    Range("C71").Errors(xlEvaluateToError).Ignore = True
End Sub

How is this not making that error go away? I've also tried Range("Main!C71"). That didn't work either.

This should be mind-bogglingly easy, but that one line of code still doesn't work. Any ideas?

2
Range is implicitly working on the ActiveSheet. Is that your intention?ThunderFrame
I suspect that the Range.Errors property is read-only. (The documentation says it returns something, but doesn't say you can set anything.) I think you are looking for Application.ErrorCheckingOptions.NumberAsText = FalseYowE3K
Did either of the answers solve your query? If so, please mark them appropriately to close this question.VirtualMichael
Sorry. Yes it did. Marked.Steve G.

2 Answers

1
votes

you can try this

Sub test()
Sheets("Main").Range("C71").Errors(xlNumberAsText).Ignore = True
End Sub

or

Sub test()
Sheets("Main").Range("C71").Value = Sheets("Main").Range("C71").Value
End Sub

or

The other way is you can manually disable background error checking.
you can find this option by clicking File - Excel Options - Formulas and uncheck the option

it will disable error checking for all cells

background error checking

0
votes

Cycling through each cell in the range to test the xlNumberAsText error and set the ignore flag works (although if you have a large number of cells, this may be slow).

Sub test2()
    Call turnOffNumberAsTextError(Sheets("Main").Range("C71"))
End Sub

Sub turnOffNumberAsTextError(rge As Range)
    Dim rngCell As Range
    For Each rngCell In rge.Cells
        With rngCell
            If .Errors.Item(xlNumberAsText).Value Then
                .Errors.Item(xlNumberAsText).Ignore = True
            End If
        End With
    Next rngCell
End Sub