我想运行一个允许执行以下步骤的宏:
宏将记录形状A的位置和大小属性
用户点击另一张幻灯片上的形状B
到目前为止,我已经能够获得初始形状(形状A' s)属性,但我不确定如何让用户选择下一个形状。
Dim w As Double
Dim h As Double
Dim l As Double
Dim t As Double
With ActiveWindow.Selection.ShapeRange(1)
w = .Width
h = .Height
l = .Left
t = .Top
End With
感谢帮助!
请参阅下面的答案。如果您之前没有使用过表单(比如我自己),则代码以" Private Sub CommandButton1_Click()"开头。不应插入同一模块中。转到插入> Userform,然后将两个命令按钮拖到UI框上,另一个" Userform代码"窗口应该出现。那个新窗口就是" Private Sub CommandButton1_Click()"代码应该去。
答案 0 :(得分:1)
一种方法是:
在一个模块中:
Public aShapes() As Shape
Sub RecordShapes()
ReDim aShapes(1 To 1)
Dim x As Long
Set aShapes(1) = ActiveWindow.Selection.ShapeRange(1)
' the modeless form will allow the user to move from slide to slide
' selecting shapes as they wish
UserForm1.Show vbModeless
End Sub
在表格上,两个按钮;一个用于将当前选定的形状添加到您正在收集的形状数组中,另一个用于将第一个形状的参数应用于添加的所选形状。
Private Sub CommandButton1_Click()
ReDim Preserve aShapes(1 To UBound(aShapes) + 1)
Set aShapes(UBound(aShapes)) = ActiveWindow.Selection.ShapeRange(1)
End Sub
Private Sub CommandButton2_Click()
Dim x As Long
For x = 2 To UBound(aShapes)
aShapes(x).Left = aShapes(1).Left
aShapes(x).Width = aShapes(1).Width
' etc
Next
End Sub
您需要添加错误检查以确保在用户点击任何按钮时选择了SOMETHING,在选择第一个形状后,他们已将至少一个形状添加到数组中,并且您可能还想处理多个选定的形状。
答案 1 :(得分:0)
我认为您将无法使用点击事件。我建议创建宏并将它们存储在快速访问工具栏上。在那里,键盘快捷键是ALT + SOME NUMBER,可以快速使用。
对于代码,一般的想法是您使用global
范围创建变量。这允许他们在Sub
完成执行后保留其值。
在下面的代码中,StoreDetails
将保存,OutputDetails
将应用于新选择的对象。保存的信息将保留在那里,这样您就可以从A保存,然后在不再看到A的情况下应用于B,C,D。
Module1内的代码
Dim w As Double
Dim h As Double
Dim l As Double
Dim t As Double
Sub StoreDetails()
With ActiveWindow.Selection.ShapeRange(1)
w = .Width
h = .Height
l = .Left
t = .Top
End With
End Sub
Sub OutputDetails()
With ActiveWindow.Selection.ShapeRange(1)
.Width = w
.Height = h
.Left = l
.Top = t
End With
End Sub
如果您需要帮助,请参阅以下assigning macros to the Quick Access Toolbar文章。