Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用VBA和excel 2007将字符串中存储的数字与包含文本格式数字的单元格进行比较_String_Vba_Excel - Fatal编程技术网

String 使用VBA和excel 2007将字符串中存储的数字与包含文本格式数字的单元格进行比较

String 使用VBA和excel 2007将字符串中存储的数字与包含文本格式数字的单元格进行比较,string,vba,excel,String,Vba,Excel,我试图将字符串(可以是数字和字母的组合,也可以只是数字)与格式化为文本的单元格(其内容可以是数字和字母的组合,也可以只是数字)进行比较。我发现,当它将同时包含字母和数字的字符串与包含匹配内容的单元格进行比较时,它能够正确地将它们标识为相同的。但是,如果将仅包含数字的字符串与包含相同内容的单元格进行比较,则不会将其识别为匹配项。我的代码: 如果location.Value=标识符,则msgbox“匹配” 其中,identifier是一个字符串,位置的单元格格式为文本 我还发现,如果我改为使用: D

我试图将字符串(可以是数字和字母的组合,也可以只是数字)与格式化为文本的单元格(其内容可以是数字和字母的组合,也可以只是数字)进行比较。我发现,当它将同时包含字母和数字的字符串与包含匹配内容的单元格进行比较时,它能够正确地将它们标识为相同的。但是,如果将仅包含数字的字符串与包含相同内容的单元格进行比较,则不会将其识别为匹配项。我的代码:

如果location.Value=标识符,则msgbox“匹配”

其中,
identifier
是一个字符串,
位置的单元格格式为文本

我还发现,如果我改为使用:

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

然后它能够识别两个数字(存储为字符串)何时相等。是否有任何方法可以避免使用字符串来保存
location.value
?如果有人知道我最初的方法失败的原因,我也会非常感激。谢谢。

试试这个。它将确保将
位置
中的值作为字符串进行比较

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

试试这个。它将确保将
位置
中的值作为字符串进行比较

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

您可以使用公式1c1代替值进行比较

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

您可以使用公式1c1代替值进行比较

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

尝试
如果CStr(location.Value)=CStr(identifier),然后使用msgbox“匹配”
——这样您总是将字符串与字符串进行比较。

尝试
如果CStr(location.Value)=CStr(identifier),然后使用msgbox“匹配”
——这样您总是将字符串与字符串进行比较。

很好的调用,效果很好。我决定使用
如果CStr(location.Value)=identifier,那么使用msgbox“Matching”
只是为了消除额外的字符串变量。谢谢打得好,效果很好。我决定使用
如果CStr(location.Value)=identifier,那么使用msgbox“Matching”
只是为了消除额外的字符串变量。谢谢
Dim ID_holder As String
ID_holder = cstr(location.value)
If ID_holder = cstr(identifier) then msgbox "Matching"