VBA uses bankers rounding in an attempt to compensate for the bias in always rounding up or down on .5; you can instead;

WorksheetFunction.Round(cells(1,1).value * cells(1,2).value, 2)
Answer from Alex K. on Stack Overflow
🌐
Microsoft Learn
learn.microsoft.com › en-us › office › vba › language › reference › user-interface-help › round-function
Round function (Visual Basic for Applications) | Microsoft Learn
Returns a number rounded to a specified number of decimal places. ... This VBA function returns something commonly referred to as bankers rounding. So be careful before using this function.
🌐
TechOnTheNet
techonthenet.com › excel › formulas › round_vba.php
MS Excel: How to use the ROUND Function (VBA)
This Excel tutorial explains how to use the Excel ROUND function (in VBA) with syntax and examples. The Microsoft Excel ROUND function returns a number rounded to a specified number of digits. Please note that the WS version of the ROUND function has different syntax.
Discussions

How to round up with excel VBA round()? - Stack Overflow
For clarity, I named the year and ... in VBA. daysinmonth is of course how many days in a month determined with a previous equation. If anyone's interested, here is the code I used (maybe more parenthesis than needed but I didnt care to trial and error to use less): count = -1 * (Int((-1 * (daysinmonth + (DateSerial(years, months, 1) - 1))) / 7)) 2016-10-26T14:09:23.757Z+00:00 ... Math.Round uses Bankers ... More on stackoverflow.com
🌐 stackoverflow.com
excel - VBA - How to Round values in Range with `With` statement - Stack Overflow
Using With statement, how do I update .values in Range of cells, to be the result of a Round function, which will take the individual .values as a parameter. In other words, how to write this: Range(& More on stackoverflow.com
🌐 stackoverflow.com
Rounding in Excel VBA
I didn't read the description properly before - I now understand that the problem is that VBA rounds to even. Easiest workaround is probably using the WorksheetFunction implementation as suggested by u/xhsmd . You can also use format, which uses round half up as you would have been taught in grammar school :P Sub Example() x = 12.5 Debug.Print "Positive: " & RoundHalfUp(x) Debug.Print "Negative: " & RoundHalfUp(x * -1, 1) End Sub Function RoundHalfUp(num, Optional numDecimalPlaces = 0) Dim dpFormat As String: dpFormat = "0" Dim i As Long If numDecimalPlaces > 0 Then dpFormat = dpFormat & "." For i = 0 To numDecimalPlaces - 1 dpFormat = dpFormat & "0" Next End If RoundHalfUp = CDbl(Format(num, dpFormat)) End Function More on reddit.com
🌐 r/vba
13
11
May 31, 2019
Round a range of cells using VBA
Im stuck on how to round a range of cells using VBA. At the moment Im having to insert a new column, add the formula in the new column, pastespecial values to the original column then delete the new column. Which is VERY messy. Ive tried using Application.Worksheetfunction.Round but that only... More on mrexcel.com
🌐 mrexcel.com
18
0
February 22, 2004
🌐
Better Solutions
bettersolutions.com › vba › numbers › rounding.htm
VBA Numbers - Rounding - Rounding
1 month ago - CINT function returns the expression converted to an integer data type. This function rounds up to the nearest integer if the fractional part is greater than 0.5.
🌐
Reddit
reddit.com › r/vba › rounding in excel vba
r/vba on Reddit: Rounding in Excel VBA
May 31, 2019 -

As we should all know, Excel VBA function ROUND doesn't round like we were taught in grammar school. It does banker's rounding (e.g, .5 rounds to 0, 1.5 rounds to 2, 2.5 rounds to 2, etc.).

This site suggests a routine you can implement to make your numbers round like everybody else expects.

I looked at what it does and it seems wayyyyyy too complicated for what needs to be done. Seems. It looks to me like all their code could be reduced to one line:

StandardRound = Round(CDbl(CStr(pValue) & "1"), pDecimalPlaces)

Does my routine need to be more complicated for reasons I'm not comprehending?

Edit: Answer: YES! But I love a good discussion, so at the cost of feeling inadequate, I got one. Small price to pay!

Find elsewhere
🌐
Microsoft Learn
learn.microsoft.com › nl-nl › office › vba › language › reference › user-interface-help › round-function
Round function (Visual Basic for Applications) - VBA
March 29, 2022 - Returns a number rounded to a specified number of decimal places. ... This VBA function returns something commonly referred to as bankers rounding. So be careful before using this function.
🌐
LibreOffice
help.libreoffice.org › latest › en-US › text › sbasic › shared › 03170000.html
Round Function [VBA]
Rounds a numeric value to a specified number of decimal digits. This constant, function or object is enabled with the statement Option VBASupport 1 placed before the executable program code in a module.
🌐
MrExcel
mrexcel.com › forums › question forums › excel questions
Round a range of cells using VBA | MrExcel Message Board
February 22, 2004 - Sub y_PureFire() For Each cell In [A:A] If cell = "" Then Exit Sub cell.Value = WorksheetFunction.Round(cell.Value, 4) Next cell End Sub I hope this helps! ... WOW!....thank you very much for all your help and for being so fast... It works perfectly now :D ... Hi PureFire: You Are Very Welcome -- now let us keep EXCELing! ... WOW!....thank you very much for all your help and for being so fast... It works perfectly now :D · Click to expand... can anyone help me to resolve my query. I want a VBA code that works in multiple sheets.
🌐
VA
va.gov › disability › about-disability-ratings
About disability ratings | Veterans Affairs
Tip: Look for your highest disability rating (or highest combined rating) in the left column, and your next lowest disability rating in the top row. Your combined rating is the number where the 2 intersect on the chart, rounded to the nearest 10%.
🌐
GeeksforGeeks
geeksforgeeks.org › excel › how-to-round-with-doubles-in-excel-vba
How to Round With Doubles in Excel VBA - GeeksforGeeks
September 19, 2023 - Define a sub-procedure in VBA. Define a variable "number" as Double which will hold the number to be rounded.
🌐
Wall Street Mojo
wallstreetmojo.com › home › all blogs › vba resources › vba round function
VBA Round | How to use Excel VBA Round Function?
December 23, 2024 - As the name suggests, rounds up or down the given number to the specific set of decimal places specified by the user. This function uses the logic of round even, which means it takes 5 as the reference.
🌐
Village Medical
villagemedical.com › patient-portal
Patient Portal Login | Village Medical
Access your Village Medical patient portal to check and book appointments, update insurance information, pay bills, and more
🌐
EDUCBA
educba.com › home › vba › vba resources › vba math & trig functions › vba round
VBA Round | How to Use Excel VBA Round Function?
April 8, 2023 - You must have used Excel Round ... in a different manner than the one you use in Excel. VBA Round function uses “round to even” logic....
Address   Unit no. 202, Jay Antariksh Bldg, Makwana Road, Marol, Andheri (East),, 400059, Mumbai
🌐
MrExcel
mrexcel.com › forums › question forums › excel questions
Round function not working correctly in vba | MrExcel Message Board
March 12, 2013 - Floating-point arithmetic may give inaccurate results in Excel Resolution is to use Round I would suggest doing it like this q = Round(Round((n / o * 100), 2) - 100,2) or just q = Round((n / o * 100)-100, 2) ... Hi, apologies, I've only just ...
🌐
Under30CEO
under30ceo.com › home › vba round
VBA Round - Under30CEO
March 23, 2024 - It refers to a function that rounds ... VBA Round is a function used in VBA (Visual Basic for Applications) that allows users to round off a decimal number to a specified number of decimal places....
🌐
MrExcel
mrexcel.com › forums › question forums › excel questions
VBA round() function and worksheetFunction. ...
May 25, 2022 - With one exception, all rounding in VBA, whether explicit (such as the Round function) or implicit (such as assigning a floating point number to an integer variable) use what is known as Banker's Rounding (if the rounding position is exactly a 5, then it is rounded to the nearest even number (in your case, the 2 is the nearest even number).