我读了一个excel文件,在单元格中我得到了这样的文字:
"=- Bla Bla Bla".
这将无法识别,并会显示#NAME?
因此,如果您需要读取某个单元格并将其放入数据库,则文件中的此错误将显示为Error 2029
。该脚本将冻结。
因此,如果我在单元格中获得=
或-
个字符,我是否可以预先替换内容,以便在阅读内容之前验证内容并获取错误。我可以通过吗!
我需要细胞验证
Private Sub Worksheet_Change(ByVal Target As Range)
c = Target.Cells.Column
r = Target.Cells.Row
'validate cell
End If
谢谢!
答案 0 :(得分:0)
这是你在尝试的吗?
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
答案 1 :(得分:0)
您还可以将数据验证添加到工作表中,以防止以这种方式输入内容。在“验证条件”下,允许“自定义”并输入以下公式:
=NOT(OR(IF(EXACT(LEFT(TRIM(A1),1),"-"),1,0),IF(EXACT(LEFT(TRIM(A1),1),"="),1,0)))
如果在单元格中输入的值以“ - ”或“=”(带前导空格)开头,则它不会接受它。如果此人输入了=123
,那么它就会有效,因为它被视为公式,只会将其视为123
。
如果您不希望单元格包含=
或-
,请尝试使用此数据验证公式。同样,它将无法捕获像=NOW()
或=-hi
这样的公式(#NAME?
会看到-hi
),但会拒绝=-123
因为它看到了-123
。如果您将单元格格式设置为文字,则它会拒绝任何内置=
或-
的单元格,因为以=
开头的值不会被视为公式
=NOT(OR(ISNUMBER(FIND("=",A18)),ISNUMBER(FIND("-",A18))))
答案 2 :(得分:0)
我得到了它的工作
'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