У меня проблема с макросом VBA, который я написал, с частью, предназначенной для поиска самого низкого значения в диапазоне. Линия выглядит следующим образом:VBA Range.Find функция на округленных отрицательных числах
Min = Application.WorksheetFunction.Min(a0eqB) Set MinCell = a0eqB.Find(Min, LookIn:=xlValues)
И это возвращает Object variable or With block variable not set
ошибку. Теперь я знаю, почему это происходит - иногда Find
находит Nothing
, и я узнал, как обращаться с такими типами ситуаций. Хотя, он также находит Nothing
, когда значение dispayed в ячейке отличается от значения в переменной Min
.
Например, когда Min = -11.2641373534338
, значение в ячейке равно -11.264137
, а затем возникает ошибка. Но если я изменил количество десятичных знаков, отображаемых для этой ячейки с помощью кнопок пользовательского интерфейса Excel, пока не будет -11.2641373534338
, все будет хорошо. Значение в ячейке на самом деле является результатом вычисления формулы, если это помогает.
Я вижу два пути решения этой проблема:
- Выяснить, как показываются много знаков после запятой, а затем округление фактического значения, так они совпадают. Но таким образом совпадение на самом деле может пойти не так, поскольку числа, подобные 11.321 и 11.322, если округлить до 2 десятичных знаков, будут одинаковыми. Кроме того, это невозможно из-за того, что мне нужно найти адрес ячейки, чтобы это сделать, и это сделано в строке 2 вышеприведенного кода, что вызывает проблему.
- Как-то сказать
Find
функция использовать фактические и не отображаемые номера, но я понятия не имею, как это сделать. Я несколько раз искал Google, но до сих пор не добился успеха.
Я по-настоящему благодарю вас за помощь.
Это действительно странное поведение «Найти». Большое спасибо! – gBop