2016-07-06 3 views
1

Мой код VBA работает очень хорошо. Я могу изменить многомерный размер фигур, но работает только для округлых чисел. Если я палочку изменить размер формы, чтобы быть 2.5 или 5.5, не работает, но тип данных переменной двойной. Есть идеи?Тип данных для изменения размера фигуры

Спасибо

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 
+0

Что вы имеете в виду под «не работает»? –

ответ

2

Это потому, что вы используете CInt в

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

литье результат как integer.
Итак, ответ должен быть, как показано ниже:

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

Почему бы вам не уточнить свой ответ, чтобы посоветовать вместо этого использовать 'CDbl' - это даст ему лучший ответ ;-) –

+0

Re:' Robin' yup, только что пересмотренный. Спасибо – Grace

+0

Re: 'Norby', если вы найдете ответ полезным, можете ли вы пометить его как приемлемый ответ, спасибо большое:) – Grace

 Смежные вопросы

  • Нет связанных вопросов^_^