我正在编写代码以查询某一列中的最高美元金额,并取回该值以及目标单元格中具有9个字符的相邻列中单元格的值
当我设置范围变量时,它会显示“ 12000.88”的值,该值可以正常工作,但是一旦该值扩展到超过9位的“ 123000.55”,“ set fnd”便找不到它,并且范围变量为Nothing 。我测试了许多其他内容,发现唯一的区别是值的长度
Sub Populate()
Dim Fnd As Range
Set Fnd = Range("L:L").Find(WorksheetFunction.Large(Range("L:L"), 1), , xlValues)
End Sub
我对较小的数字没有问题,但我不明白为什么对较大的数字不起作用。
Find()
函数会查找string
,并且双精度字符串被“串化”显然不是正确的方法-带逗号而不是点。考虑解析为字符串并将逗号替换为一个点以使其起作用:Sub Populate()
Dim foo As Range
Dim biggus As Double
biggus = WorksheetFunction.Large(Range("A:A"), 1)
Set foo = Range("A:A").Find(ReplaceCommas(biggus), , xlValues)
Debug.Print foo.Address
End Sub
Function ReplaceCommas(valueAsString As Variant) As String
Dim valueToReplace As String
valueToReplace = valueAsString
ReplaceCommas = Replace(valueAsString, ",", ".")
End Function
[xlFormulas
位于SearchIn
参数中时,“功能”未出现的事实是由于xlFormulas
将单元格的内容转换为字符串,以便进行搜索在里面。例如,如果存在=SUM(A1+A2)
并且我们正在寻找1+A
,则找到它的唯一方法是将单元格的内容解析为String。