Excel VBA。查找忽略逗号

Excel VBA。查找忽略逗号,excel,vba,Excel,Vba,我有一个在a列中搜索值的代码。这些值是项目编号,如4545和3605。 有时一个项目确实有多个子项目。确定一个子项目作为示例:3605,01和3605,02等 我使用.find来查找项目的行,找到该行后,将粘贴一些数据 问题 像4545这样的数字工作得很好,但当使用逗号时,Excel似乎无法理解。我想他把逗号看作一个点。如何让Excel知道逗号是十进制分隔符?还是还有其他问题 这是我的代码: Dim Projectnumber As String Projectnumber =

我有一个在a列中搜索值的代码。这些值是项目编号,如4545和3605。 有时一个项目确实有多个子项目。确定一个子项目作为示例:3605,01和3605,02等

我使用.find来查找项目的行,找到该行后,将粘贴一些数据

问题

像4545这样的数字工作得很好,但当使用逗号时,Excel似乎无法理解。我想他把逗号看作一个点。如何让Excel知道逗号是十进制分隔符?还是还有其他问题

这是我的代码:

    Dim Projectnumber As String
    Projectnumber = ActiveWorkbook.Sheets("Planning").Range("A6").Value2
    Dim ThisProjectRow As Range
    With Workbooks(Bureauplanner).Sheets("planning").Range("A:A")
        Set ThisProjectRow = .Find(What:=Projectnumber, LookIn:=xlValues, Lookat:=xlWhole, MatchCase:=False, Searchformat:=False)
            If Not ThisProjectRow Is Nothing Then
            End If
    End With

是的,因此罪魁祸首是
字符串
数据类型。你提到

“A列在值中…”

当您将查找值存储到
字符串
数据类型中时,这意味着您正在比较两种不同的数据类型>双
字符串
。我想这不适合VBA

因此,有两种方法可以解决这个问题:

1)。将列A转换为
字符串
格式值

或者


2)。
字符串
变量替换为
双精度
将项目编号变为双精度
对,因此您的罪魁祸首是
字符串
数据类型。你提到

“A列在值中…”

当您将查找值存储到
字符串
数据类型中时,这意味着您正在比较两种不同的数据类型>双
字符串
。我想这不适合VBA

因此,有两种方法可以解决这个问题:

1)。将列A转换为
字符串
格式值

或者


2)。
字符串
变量替换为
双精度
将项目编号变为双精度
,或者您也可以将其替换为双精度
。。。使用CDbl()查找双精度值:


或者你也可以这样做,反之亦然。。。使用CDbl()查找双精度值:


您可以尝试将
Projectnumber=ActiveWorkbook.Sheets(“Planning”).Range(“A6”).Value2
我的Excel版本(2019,荷兰语)中的
.Value
替换为
文本。我无法复制你的问题。细胞被发现很好。试着想想为什么你的不会。@vitaliy Prushak。文本不起作用。列A在值中,我使用该列中的筛选器作为well@JvdV我也在使用Excel,现在可以复制了。
字符串
数据类型是您的罪魁祸首。例如:
.Find(What:=.Cells(6),LookIn:=xlValues,Lookat:=xlother,MatchCase:=False,Searchformat:=False)
将起作用您可以尝试将
行中的
替换为
文本
项目编号=active工作簿.Sheets(“计划”).Range(“A6”).Value2
我的Excel版本(2019,荷兰)也适用于十进制逗号而不是小数点。我无法复制你的问题。细胞被发现很好。试着想想为什么你的不会。@vitaliy Prushak。文本不起作用。列A在值中,我使用该列中的筛选器作为well@JvdV我也在使用Excel,现在可以复制了。
字符串
数据类型是您的罪魁祸首。例如:
.Find(What:=.Cells(6),LookIn:=xlValues,Lookat:=xlother,MatchCase:=False,Searchformat:=False)
可以工作
Dim Projectnumber As String
 Projectnumber = ActiveWorkbook.Sheets("Planning").Range("A6").Value2
 Dim ThisProjectRow As Range
 With Workbooks(Bureauplanner).Sheets("planning").Range("A:A")
     Set ThisProjectRow = .Find(What:=CDbl(Projectnumber), LookIn:=xlValues, Lookat:=xlWhole, MatchCase:=False, Searchformat:=False)
         If Not ThisProjectRow Is Nothing Then
         End If
End With