切换纵横比

Toggle Aspect Ratio

我写这个子来切换形状的锁定纵横比。它会锁定它但不会解锁它

    Sub ToggleAspectRatio()

With ActiveWindow.Selection.ShapeRange

MsgBox .LockAspectRatio

'On Error GoTo err_handler:
  'Unlock
    If .LockAspectRatio = msoCTrue Then .LockAspectRatio = msoFalse
  'Lock
    If .LockAspectRatio = msoFalse Then .LockAspectRatio = msoCTrue

End With
On Error GoTo 0

Exit Sub

'Error Handler - No Object is Currently Selected
 
 err_handler:
  MsgBox "No object is selected"
  Exit Sub
    
End Sub

请帮助我。提前致谢。

您的第一个 If 语句将 LockAspectRatio 设置为 false,您的第二个语句检测到 false 并将其设置回 true。相反,使用 Else 语句:

If .LockAspectRatio = msoTrue Then
    .LockAspectRatio = msoFalse
Else
    .LockAspectRatio = msoTrue
End If

我找到了解决方案。代表我的错误太多了。

这是工作代码:

Sub ToggleAspectRatio()

'PURPOSE: Toggle Lock Aspect Ratio Property on/off
 
Dim ShapeName As String

On Error GoTo err_handler
    With ActiveWindow.Selection.ShapeRange
    
    If .LockAspectRatio = True Then
        .LockAspectRatio = False
    Else
        .LockAspectRatio = True
    End If
    End With
Exit Sub
   
err_handler:
  MsgBox "No object is selected"
  Exit Sub

End Sub

感谢@johnk