excel - 删除与图案匹配的所有 Excel 绘图图层形状

标签 excel vba

考虑一个包含大量形状的 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/

相关文章:

arrays - VBA,内联数组

vba - 添加组合框项目

sharepoint - 超链接在共享点的 Excel 工作表中不起作用

excel - 在 ME49 中打开供应商的报价?

vba - Excel VBA - 将参数参数传递给 Sub

excel - 用上面单元格中的值替换 powerquery 列中的空值

excel - 有没有办法同时禁用多个按钮?

Excel 'put random value in a cell and run permutation "最简单的问题

excel - 如何将包含来自不同单元格的部分文本的单元格重新组织到一列中?

excel - VBA 如何确定当前正在哪个软件产品中运行?