String VBA字符串卫生
我从Oracle数据库中导入数据,并使用Excel从中创建一些报告。最近,我们的一位数据输入人员开始用“+”开始她的输入。Excel然后计算并添加=然后显示可怕的“名称”错误。错误是错误2029 我试着用String VBA字符串卫生,string,vba,excel,String,Vba,Excel,我从Oracle数据库中导入数据,并使用Excel从中创建一些报告。最近,我们的一位数据输入人员开始用“+”开始她的输入。Excel然后计算并添加=然后显示可怕的“名称”错误。错误是错误2029 我试着用 If IsError(C.Value) Then C.Value = Replace(C.Value, "=+", "", 1, -1, vbTextCompare) End If 但这对我没有任何帮助 有什么建议吗?Excel有自己的替换功能: ActiveSheet.Cells.
If IsError(C.Value) Then
C.Value = Replace(C.Value, "=+", "", 1, -1, vbTextCompare)
End If
但这对我没有任何帮助
有什么建议吗?Excel有自己的替换功能:
ActiveSheet.Cells.Replace What:="=+", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
如果数据位于文本/CSV文件中,则可以尝试:
data>Import External data>Import data
这将启动一个向导,允许您将特定列指定为文本,并导致Excel无法解析+、-等符号
在VBA中,这可以通过工作表(“foo”).QueryTables.Add方法完成。有很多选项,但是TextFileColumnDataTypes
属性允许您指定将哪些列视为文本。通过记录正在使用的向导的宏,然后根据需要编辑宏,可以更容易地了解发生了什么
如果您更直接地读取数据(例如通过ADO或DAO),那么在添加数据之前,只需确保目标单元格为文本格式
工作表(“foo”).单元格(r,c).NumberFormat=“@”
注意:在最初的解决方案中,您几乎肯定希望查看C.Formula
而不是C.Value
如果单元格C的公式为=123+456
,那么C.Value
将是579,而C.Formula
将是=123+456
+1在本上下文中使用内置的Replace
方法时还有一件事,它应该是:
If IsError(C.Value) Then
C.Value = Replace(C.Formula, "=+", "", 1, -1, vbTextCompare)
End If
这是因为=+存储在formula属性中,而不是值中…如果您不想自己在VBA中进行清理,则可以将替换(…)分配给C.value或C.formula。当我运行时,我得到运行时错误“438”OBJECT dosen“不支持此属性或methodoops-请使用“单元格”重试“-返回工作表中所有单元格的范围对象谢谢你,barrowc,你的最终答案成功了,我忘了看.formula而不是.value