我有一张纸,人们必须使用钢笔和平板电脑进行签名。在excel上,我们正在使用"开始着墨"这个过程。我想在完成后选择,调整大小并移动签名。我使用了宏录制并想出了如何调整大小和移动,但显然我只能选择所有形状或选择我知道它的名称(墨水17)的形状,我不知道。我仔细考虑了一下,意识到也许我可以通过选择最新创建的形状来解决它。此外,签名可能包含一条或多条曲线,这意味着我必须记住之前的曲线并选择其余曲线(当第二或第三人签名时)。我确信有办法可以做到这一点,但我已经花了最后几个小时而没有任何运气。
有人可以帮忙吗?
答案 0 :(得分:1)
最简单的方法是让他们在没有其他形状的地方签名。我们假设它们的范围为M11:Q31
。这个子将是左上角单元格在该范围内的所有形状的高度和宽度的一半(具有"背景"从N11
开始不会受到影响。)
Sub kjhdrle()
Dim x As Variant, y As String
y = ""
For Each x In ActiveSheet.Shapes
If Not Intersect(x.TopLeftCell, [M11:Q31]) Is Nothing Then
If y = "" Then
y = x.Name
Else
y = y & vbLf & x.Name
End If
End If
Next
If y = "" Then Exit Sub
ActiveSheet.Shapes.Range(Split(y, vbLf)).Select
If InStr(y, vbLf) Then Selection.ShapeRange.Group.Select
Selection.ShapeRange.ScaleWidth 0.5, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.5, msoFalse, msoScaleFromTopLeft
End Sub
我保持尽可能简单。它还会对多个项目进行分组,因此在调整大小时,锚点也会缩放。 (没有,每个元素都会在自己的锚点缩小)。
另一种方式是自动重命名你不想被处理的形状......有类似" not_me _"在名字前面。然后在运行代码时,只需忽略以该字符串开头的形状。在处理之后,sub使用的形状被重命名为"not_me_" & [shape].name
,因此下次将被忽略;)
如果您还有任何疑问,请询问。