EXCEL:Cell.Value返回前面的“?”

时间:2012-04-11 14:39:03

标签: excel cell

我在部分代码中返回一个单元格值,然后清理数据以删除非法的文件名字符。其中一个角色当然是“?”由于某种原因,我的一些细胞正在返回前面的内容?尽管这不是细胞的一部分。

此外,我用来清理字符串的代码没有取代这个领先?我希望它有一个空格。

Function Clean(ByVal sFolderName As String) As String

Dim i As Long
Dim sTemp As String

For i = 1 To Len(sFolderName)
      Select Case Mid$(sFolderName, i, 1)
         Case "/", "", ":", "*", "?", "<", ">", "|"
             sTemp = sTemp & ""
         Case Else
             sTemp = sTemp & Mid$(sFolderName, i, 1)
     End Select
 Next i

Clean = sTemp

End Function

例如,单元格中的值将显示为8324297444,但在尝试检索cell.value属性时,它将返回?8324297444。然后,当调用清理功能时,它会保持领先吗?字符。

我正在试图弄清楚我的头发是什么。

有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

顺便说一句,问号(?)和asterix(*)是Excel特殊字符。尝试使用tild caracter来逃避特殊字符,如:

       Case "/", "", ":", "~*", "~?", "<", ">", "|"

编辑:然后尝试使用这样的字符代码:

       Case "/", "", ":", CHR(42), CHR(63), "<", ">", "|"

答案 1 :(得分:0)

经过几天的故障排除后,它似乎是一个无法纠正的孤立事件。我已经用尽所有关于SO和其他来源的建议。

我能够通过识别受此行为影响的数据并手动重新键入来纠正这种情况。

这不是最有效的解决方案,但确实解决了这个问题。

如果您遇到此问题,请注意,这是我能找到的唯一解决方案。