I have a worksheet that allows the user to place input to cell D4.

I need to have this value rounded to 1-decimal, so I have the following code on the Worksheet_Change event:

Formula: copy to clipboard
Select Case Target.Column
Case 4
Select Case Target.Row
Case 4
If Target.Value > 0 Then
Application.EnableEvents = False
Target.Value = Round(Target.Value, 1)
Application.EnableEvents = True
End If
End Select
End Select


When I type 345.45, I would expect the cell value to change to 345.5, BUT it changes to 345.4
When I type 345.55, I would expect the cell value to change to 345.6, it DOES change to 345.6

If I use:
Formula: copy to clipboard
Select Case Target.Column
Case 4
Select Case Target.Row
Case 4
If Target.Value > 0 Then
Application.EnableEvents = False
Target.Value = Application.WorksheetFunction.Round(Target.Value, 1)
Application.EnableEvents = True
End If
End Select
End Select


When I type 345.45, I would expect the cell value to change to 345.5, it DOES change to 345.5
When I type 345.55, I would expect the cell value to change to 345.6, it DOES change to 345.6


Why doesn't the first Round() function work as expected?