Reputation: 361
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
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