用excel 2007中的VBA将存储在string中的数字与包含格式为文本的数字的单元格进行比较

我试图比较一个string(可能是数字和字母的组合,或者只是数字)到格式为文本(其内容可能是数字和字母的组合,或者只是数字)的单元格。 我发现,当它将具有字母和数字的string与具有匹配内容的单元格进行比较时,它能够正确识别它们是否相同。 但是,当string只包含数字与包含相同内容的单元格进行比较时,它不会将其识别为匹配。 我的代码:

If location.Value = identifier then msgbox "Matching"

identifier是一个string, location的单元格被格式化为文本。

我也发现,如果我改用:

 Dim ID_holder As String ID_holder = location.value If ID_holder = identifier then msgbox "Matching" 

那么它就能够识别两个数字(存储为string)是否相等。 是否有避免使用额外的步骤使用一个string来保存location.value ? 如果有人知道为什么我原来的方法失败了,也将不胜感激。 谢谢。

尝试这个。 这将确保无论location的价值是什么,比较作为一个string。

 Dim ID_holder As String ID_holder = cstr(location.value) If ID_holder = cstr(identifier) then msgbox "Matching" 

尝试If CStr(location.Value) = CStr(identifier) then msgbox "Matching" – 这种方式,你总是比较一个stringstring。

您可以使用FormulaR1C1而不是Value进行比较。

 Sub Macro1() Set a = Range("A1") Set b = Range("A2") If a.FormulaR1C1 = "123" Then MsgBox "a: Match" If b.FormulaR1C1 = "abc" Then MsgBox "b: Match" End Sub