Norby
Norby

Reputation: 361

Data type for changing size of shapes

My VBA code works very well. I can change multple size of shapes, but is working only for rounded numbers. If I wand to change size of shape to be 2.5 or 5.5 is not working, but data type of variable is double. Any ideas?

Thank you

Function ConvertPointToCm(ByVal pnt As Double) As Double
ConvertPointToCm = pnt * 0.03527778
End Function

Function ConvertCmToPoint(ByVal cm As Double) As Double
ConvertCmToPoint = cm * 28.34646
End Function


Sub test()

Dim objHeigh As Double
Dim objWidth As Double
Dim oSh As Shape

On Error GoTo CheckErrors

With ActiveWindow.Selection.ShapeRange
If .Count = 0 Then
    MsgBox "You need to select a shape first"
    Exit Sub
End If
End With

 objHeigh = CInt(InputBox$("Assign a new size of Height", "Heigh"))
' give the user a way out
If objHeigh = 0 Then
Exit Sub
End If
objHeigh = ConvertCmToPoint(objHeigh)

objWidth = CInt(InputBox$("Assign a new size of Width", "Width"))
' give the user a way out
If objWidth = 0 Then
Exit Sub
End If
objWidth = ConvertCmToPoint(objWidth)

For Each oSh In ActiveWindow.Selection.ShapeRange
If objName <> "" Then
    oSh.Name = objName
End If

oSh.Height = CInt(objHeigh)
  oSh.Width = CInt(objWidth)
Next
Exit Sub

CheckErrors: MsgBox Err.Description

End Sub

Upvotes: 1

Views: 200

Answers (1)

Grace
Grace

Reputation: 888

It's because you use CInt in

objHeigh = CInt(InputBox$("Assign a new size of Height", "Heigh"))

casting the result as an integer.
So, the answer should be as below:

objHeigh = CDbl(InputBox$("Assign a new size of Height", "Heigh"))

Upvotes: 2

Related Questions