Reputation: 409
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?
Upvotes: 4
Views: 3282
Reputation: 61
"Selection.Errors(xlTextDate).Ignore = True" will not work. To correct replace (xlTextDate) with one of the following values
However, check the various values as your version of Excel may be different. I am using Excel 365.
Source: https://learn.microsoft.com/en-us/office/vba/api/Excel.XlErrorChecks On that page every variable list the needed value but not what Excel has assigned.
I don't make up the rules! When the values are corrected our code will likely fail again. I would report but MS has never fixed an error I have reported.
Reason to use text format: storing Facebook Video Id "4592884094151437" becomes "4592884094151430" doesn't work.
Upvotes: 1
Reputation: 781
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
Upvotes: 2
Reputation: 721
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
Upvotes: 0