Это один из тех случаев, когда неисправность заключается в процедуре тестирования. Поэтому существуют разные ответы на ваш вопрос, в зависимости от того, хотите ли вы исправить свой проект или процедуру тестирования.
- [Длинный тип данных] / [Длинный тип данных] возвращает результат типа Длинный данные , Поскольку результатом вашего деления является значение ниже нуля, MsgBox правильно отображает 0 в качестве результата. Чтобы исправить отображение в MsgBox, вы должны были бы умножить на 100.
- Когда вы выполняете те же вычисления и присваиваете результат ячейке (или выводите результат в окно отладки), VBA даст вам результат выражается в типе данных Double, то есть со всеми десятичными знаками и десятичной точкой с плавающей запятой. Отображение этого результата в ячейке будет зависеть от формата ячейки. Это может быть 0, если в ячейке отображаются только целые числа.
Поэтому нужно обратить внимание на типы данных задействованных переменных three М.В., IV и результат. Во-вторых, MsgBox - это обработчик текста. Не ожидайте, что он справится с числами лучше, чем вы заявляете, что вы сами. Если вы не обращаете внимания, MsgBox, скорее всего, «подумает», что вам все равно.