VBA InStr With〜

时间:2017-11-07 16:21:59

标签: excel vba excel-vba

我正在尝试从非标准日期格式的单元格中提取日期。

问题中的单元格中包含字符串“10 / 9~10 / 13”。

我知道这是因为我最初通过使用Range.Find函数找到了可疑单元格。 (我试过.Value,.Value2和.Text这里无济于事。)

        text = .UsedRange.Find("~~").Value

如果我使用debug.Print文本,那么

debug.Print text
10/9_10/13

有趣的是〜消失了。但是,debug.Print也揭示了这种奇怪的行为。

d = InStr(1, "10/9_10/13", "_", vbTextCompare)
5
d = InStr(1, text, "_", vbTextCompare)
0

我想也许文字不是字符串?

debug.Print TypeName(text)
String

如果你能解释为什么VBA表现出这种非常有用的明显不一致的行为。

2 个答案:

答案 0 :(得分:0)

我将您的数据放在 D1 中,然后我跑了:

Sub dural()
    Dim dCell As String, txet As String
    dCell = Range("D1").Value
    Debug.Print dCell

    txet = ActiveSheet.UsedRange.Find("~~").Value
    Debug.Print txet
End Sub

(我使用txet而不是文本来避免与同名属性混淆)并得到:

enter image description here

你所拥有的不是 tilda 而是其他一些看起来像 tilda 的unicode角色吗?

答案 1 :(得分:0)

正如您所看到的,AscW返回-162,您可以使用该值在vba中查找unicode char

enter image description here