Проблема в разных десятичных разделителях, которые используются в Excel и VBA. Таким образом, в значениях с плавающей точкой есть «скрытая особенность». Функция 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.