当前位置: 首页 > 知识库问答 >
问题:

“选择所有形状”给Excel VBA错误438 -“对象不支持此属性或方法”

淳于慎之
2023-03-14

我有一个工作表,用于组织,样式化和汇总数据,然后复制自身并将另一个副本保存为.PDF。

在原始工作表上,有3个由形状组组成的“按钮”,用于运行不同的宏(“重置”、“修复丢失的员工”、“打印和电子邮件摘要”)。问题是在副本中删除它们。这是从录制的宏:

ActiveSheet.Shapes.Range(Array("Group 2")).Select
Selection.Delete

我想选择/删除所有形状。我不能使用“shapes.select”、“shapes.delete”或我找到的任何帮助。除了上面列出的代码之外,每一次尝试都会导致“错误438 -对象不支持该属性或方法”,并突出显示代码的这一部分。

如何选择/删除工作表/书籍中的所有形状?(使用Excel 2010)

共有2个答案

束涵涤
2023-03-14

这是我使用的最终解决方案:

Dim sh As Shape
For Each sh In ActiveSheet.Shapes
    If sh.Type <> msoPicture Then
        sh.Delete
    End If
Next sh

原因是因为我有一个我想要保留的形状,带有公司的标志——形状对象方法非常容易处理,因为<code>形状。键入属性(因为一个形状是msoPicture,其余是msorUndedRectangles)。同样有用的是,如果有一张我想删除的图片,它应该是<code>形状。Name指定要删除或跳过的对象。

大声呼喊@Gary的学生为我指明了这条道路!

毋琪
2023-03-14

您不需要选择工作表中的所有形状来删除它们。循环将执行以下操作:

Sub ShapeKiller()
    Dim sh As Shape
    MsgBox ActiveSheet.Shapes.Count
    For Each sh In ActiveSheet.Shapes
        sh.Delete
    Next sh
End Sub

您可以同时删除多个Shape。这是一个找到某一行并删除所有上角在该行的Shape的示例:

Sub ShapePickerAndKiller()
    Dim s As Shape, sr As ShapeRange
    Dim Arr() As Variant
    Set mycell = Range("A:A").Find(What:=0, After:=Range("A1"))
    rrow = mycell.Row

    i = 1
    For Each s In ActiveSheet.Shapes
        If s.TopLeftCell.Row = rrow Then
            ReDim Preserve Arr(1 To i)
            Arr(i) = s.Name
            i = i + 1
        End If
    Next s

    Set sr = ActiveSheet.Shapes.Range(Arr)
    sr.Select
    Selection.Delete
End Sub

查看以前的帖子

 类似资料:
  • 好吧,我在VBA肯定是个新手,但我正在学习。据我所知,我的代码没有理由不能正常运行,过去也是如此。尽管这个错误不断出现。我的目的是制作一个工作表,当你在主工作表中添加一个人时,它会自动更新其他工作表。代码看起来工作正常,但是它突然抛出这个错误,我不知道为什么。我四处看了看,但似乎没有一个解决方案与我的问题有丝毫关联。任何有助于找出错误所在的帮助都将不胜感激! 以下是调试器指出错误的位置: 这是正在

  • 我需要简单地计算一张纸上的区域数。我的密码是: 但是由于某种原因,我收到错误消息“Object 不支持此属性或方法。”我不知道为什么。这段代码基本上只是从微软网站复制的。 我甚至无法使用即时窗口打印部分。 有什么快速的帮助吗?我正在使用Excel 2010。 谢了。

  • 我有以下rails配置: 有没有人对是什么导致了这个错误有什么建议?

  • 问题内容: 我在Surface Pro 3上安装了Rails,并在尝试查看页面后遇到此错误。我尝试了一些建议,例如使用libv8安装rubyracer,但没有帮助。 TypeError:对象不支持此属性或方法(在c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/turbolinks-2.5.3/lib/assets/javascripts/t

  • TypeError:对象不支持此属性或方法(在C:/RailsInstaller/Ruby2.0.0/Lib/Ruby/Gems/2.0.0/Gems/Turbolinks-2.5.3/Lib/Assets/JavaScripts/Turbolinks.js.coffee中) 这是我的Gemfile:

  • 我是VB代码的新手,我正在尝试执行下面的代码。但是我收到一条错误消息,此行对象不支持此属性或方法 我认为我的代码没有读取< code>ReceivedTime。我正在使用微软Excel 2010。我如何修理它?