0

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

此外,我用来清理字符串的代码没有替换这个前导?像我希望的那样有一个空格。

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。那么,当清理函数被调用时,它会保持这个领先?特点。

我正在撕扯头发,试图弄清楚这里发生了什么。

有人有想法么?

4

2 回答 2

1

顺便说一下,问号 (?) 和星号 (*) 是 Excel 特殊字符。尝试使用波浪字符来逃避特殊字符,如下所示:

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

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

       Case "/", "", ":", CHR(42), CHR(63), "<", ">", "|"
于 2012-04-11T14:45:58.623 回答
0

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

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

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

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

于 2012-09-16T22:51:26.833 回答