如何用#NAME解决excel错误2029?

我读了一个excel文件,并在一个单元格中获得了这样的文本:

"=- Bla Bla Bla". 这不会被识别,并会显示#NAME?

所以如果你需要读取一些单元格并将其存入数据库,那么该文件中的Error 2029将显示为Error 2029 。 脚本将冻结。 所以,如果我在单元格中获得=-字符,我可以预先replace内容,以便在读取内容之前validation内容并获取错误。 我可以通过它!

我需要细胞validation

 Private Sub Worksheet_Change(ByVal Target As Range) c = Target.Cells.Column r = Target.Cells.Row 'validate cell End If 

谢谢!

这是你正在尝试?

 Sub Sample() Dim sTemp As String With Sheets("Sheet1") '~~> Check if cell has error If IsError(.Range("A1").Value) Then '~~> Check if it is a 2029 error If .Range("A1").Value = CVErr(2029) Then '~~> Get the cell contents sTemp = Trim(.Range("A1").Formula) '~~> Remove =/- Do While Left(sTemp, 1) = "=" Or Left(sTemp, 1) = "-" sTemp = Trim(Mid(sTemp, 2)) Loop '~~> Either put it in back in the cell or do '~~> what ever you want with sTemp .Range("A1").Formula = sTemp End If End If End With End Sub 

我得到了它的工作

 'verify cell for data Private Sub Worksheet_Change(ByVal Target As Range) c = Target.Cells.Column r = Target.Cells.Row If IsError(Target.Worksheet.Cells(r, c)) Then MsgBox "You have a validation Error!" Target.Worksheet.Cells(r, c) = "" End If End Sub 

您还可以将数据validation添加到您的工作表,以防止以这种方式input内容。 在“validation标准”下,允许“自定义”并input以下公式:

 =NOT(OR(IF(EXACT(LEFT(TRIM(A1),1),"-"),1,0),IF(EXACT(LEFT(TRIM(A1),1),"="),1,0))) 

如果在单元格中input的值以“ – ”或“=”开头(带前导空格),则不会接受它。 如果input的人是=123 ,那么它将是有效的,因为它被视为一个公式,只会看作123

如果您不希望单元格包含=- 完全可以 ,请尝试使用这个数据validation公式。 再一次,它将不能捕获像=NOW()=-hi (它会看到#NAME?-hi )的-hi ,但它会拒绝=-123因为它会看到-123 。 如果将单元格格式设置为文本 ,那么它将拒绝任何带有=-单元格,因为以=开头的值不会像公式一样处理。

 =NOT(OR(ISNUMBER(FIND("=",A18)),ISNUMBER(FIND("-",A18))))