Получение «Недопустимого вызова процедуры или оператора» при использовании функции VBA Round в Excel - PullRequest
0 голосов
/ 08 апреля 2020

Я настраиваю инструмент ценообразования для моей команды по продажам, и мой начальник хочет, чтобы значения были округлены до ближайшей тысячи (т. Е. 1000) после того, как я пересчитал значения из USD в другую валюту. Я использую первую строку кода ниже, чтобы установить формат ячейки в GBP (британский sh фунтов), а затем вторую строку кода, чтобы умножить текущую сумму в этой ячейке (т.е. .value) на мою валюту преобразование, которое находится в ячейке 4,11.

Текущий код, который работает, но дает не округленный результат (£ 4235):

Cells(arr(rowcnt), ChkCol5).NumberFormat = "[$£-en-GB]#,##0"

Cells(arr(rowcnt), ChkCol5).Value = Cells(arr(rowcnt), ChkCol5).Value * Cells(4, 11)

Когда я добавляю функцию "round" в строку 2, я получаю

"Ошибка времени выполнения 5: недопустимый вызов процедуры или оператор."

Cells(arr(rowcnt), ChkCol5).Value = **Round**(Cells(arr(rowcnt), ChkCol5).Value * Cells(4, 11)**, -3)**

Когда я использую 3 вместо -3, это не ошибка, но и не ' кажется, ничего не делать. Конечно, все мои значения являются целыми числами, поэтому, может быть, поэтому. Но мне странно, что я не получаю ошибку округления с 3, но я делаю с -3.

Есть мысли ??

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Я обновил свою строку кода, чтобы использовать функцию worksheet.round, и теперь она работает. Спасибо BigBen и Рону Розенфельду за помощь.

Ячейки (arr (rowcnt), ChkCol5) .Value = WorksheetFunction .Round (Ячейки (arr (rowcnt), ChkCol5). Значение * Ячейки (4, 11), -3)

0 голосов
/ 08 апреля 2020

Вам необходимо использовать WorksheetFunction.Round здесь.

Примечания из документации по функциям Round относительно причин:

numdecimalplaces : число, указывающее, сколько мест справа от десятичного знака включены в округление. Если опущено, целые числа возвращаются функцией Round.

Таким образом, отрицательное число не является допустимым вторым аргументом.

Также примечательно:

This Функция VBA возвращает то, что обычно называют банковским округлением. Поэтому будьте осторожны перед использованием этой функции. Для получения более предсказуемых результатов используйте функции Round Works Round в Excel VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...