考虑一个包含大量形状的 Excel 工作表。要选择两个形状:
ActiveSheet.Shapes.Range(Array("Freeform 314", "Freeform 278")).Select
目标是删除所有以“Freeform”开头的形状。
我找到了一个引用 MS VBScript 正则表达式 5.5 的示例,但形状并不驻留在特定单元格上。形状的数量或具体数量几乎是未知的。因此,一个丑陋的解决方案可能是暴力破解字符串名称,但另一方面,我希望你能帮助我实现一个优雅的解决方案。
下面的代码不起作用,但您可以更好地了解问题。
Sub DeleteShapes()
Dim re As New RegExp
re.Pattern = "Freeform*"
Dim cell As Range
For Each cell In ActiveSheet.Shapes.Range(Array(re.Pattern)).Select
Selection.delete
Next cell
End Sub
最佳答案
您根本不需要正则表达式来查找自由形状。
Dim shape As Excel.shape
For Each shape In ActiveSheet.Shapes
If Left(shape.Name, 8) = "Freeform" Then
shape.Delete
End If
Next
关于excel - 删除与图案匹配的所有 Excel 绘图图层形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4348923/