Ошибка 2042 на десятичных числах application.match vba
Я не могу сопоставить максимальное значение диапазона с тем же диапазоном. Это с целью узнать, в каком столбце я могу найти максимальное значение.
im пытается с этим кодом
Set rango = Range(Cells(45, W), Cells(46, W1)) rango.Select maximo = WorksheetFunction.Max(rango) matching = Application.Match(CLng(maximo), Sheets("Dinamicos").Range(Cells(45, W), Cells(46, W1)), 0)
но я получаю ошибку 2042. В этом разделе я пытаюсь сопоставить проценты, если я использую код
- Застрял в режиме работы при сортировке
- Ошибка при запуске функции для преобразования координат в градусах в десятичную для EXCEL VBA
- Excel VBA: ошибка времени выполнения '91' при втором присвоении переменной Object
- VBA - метод «Список» объекта «_CommandBarComboBox» не выполнен
- Ошибка времени выполнения VBA 91. Переменная объекта установки проблемы
Set rango = Range(Cells(45, W), Cells(46, W1)) rango.Select maximo = WorksheetFunction.Max(rango) matching = WorksheetFunction.Match.Match(CLng(maximo), Sheets("Dinamicos").Range(Cells(45, W), Cells(46, W1)), 0)
я получаю ошибку времени выполнения 1004 Невозможно получить свойство Match из WorksheetFunction
- Ошибка выполнения «9» в VBA - Подрезка вне диапазона
- Экспорт XML-файла из Excel
- Ошибка времени выполнения VBA 438
- Цикл VBA выходит из строя вокруг 88-й итерации
- Ошибка выполнения 1004 вызова макросов в другой книге, которая была открыта через vba
- Ошибка выполнения «9» при удалении модуля Excel VBA
- Что вызывает ошибку «Invalid advise flags» во время выполнения в Excel VBA?
- заселение combobox на основе другого combobox, несоответствие типов
CLng
преобразует в длинное целое число, существенно CLng
любое десятичное число. Используйте CDbl
для преобразования в double.
dim maximo as double, matching as variant with worksheets("sheet1") maximo = WorksheetFunction.Max(.Range(.Cells(45, W), Cells(.46, W1))) end with with worksheets("Dinamicos") matching = Application.Match(CDbl(maximo), .Range(.Cells(45, W), .Cells(46, W)), 0) if not iserror(matching) then 'found a match in W; do something debug.print "found in W" else matching = Application.Match(CDbl(maximo), .Range(.Cells(45, W1), .Cells(46, W1)), 0) if not iserror(matching) then 'found a match in W1; do something debug.print "found in W1" end if end if end with
Вы также оставили некоторые ссылки на ячейки в Sheets("Dinamicos").Range(Cells(45, W), Cells(46, W1))
которые я попытался затянуть вверх.