如何用#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))))