`
发表于2023/4/7 21:18:50 楼主 
头像 等级:初学者
积分:9
财富值:2.0
身份:普通用户
用vba查询发现表格有大量对象,但查找定位对象却又看不到,用方方格子直接批量删除对象没有变化,但全选表格后,按鼠标右键选择取消隐藏,然后再用方方格子批量删除对象可以删除所有对象,但所有批注也都消失了。有没有办法解决仅删除隐藏的对象,但保留批注不变?附:用查找*选择批注,可以看到批注数量删除时,vba查询对象并不会减少,也就是它们不相关,但全选取消隐藏批量删除时却一起消失了。
我的个性签名
发表于 2023/4/10 7:58:12   
头像 等级:初学者
积分:9
财富值:2
身份:普通用户
早上好!各位,星期五晚上表述有些错误,最后的附注:用查找*选择批注,可以看到批注数量删除时,vba查询对象会减少,也就是它们相关。
我的个性签名
发表于 2023/4/10 9:18:02   
头像 等级:传说级人物
积分:1921
财富值:6
身份:系统管理员
可否录屏演示一下你的操作?
方方格子安装教程http://www.ffcell.com/WenKu/article.aspx?id=376
发表于 2023/4/10 9:52:45   
头像 等级:初学者
积分:9
财富值:2
身份:普通用户

经过早上一个多小时的网上查询,确认是方方格子的软件BUG,用2种方法可解决:

1、用网上找到VBA代码进行删除,可以不影响批注情况下解决。

2、用kutools里面的删除插图和对象也可以解决而不影响批注。

不好意思,不知道如何录屏,但根据个人推断应该是BUG,看大神能不能查源代码。

我的个性签名
发表于 2023/4/10 10:03:43   
头像 等级:传说级人物
积分:1921
财富值:6
身份:系统管理员
收到,明白了
方方格子安装教程http://www.ffcell.com/WenKu/article.aspx?id=376
发表于 2023/6/29 9:20:39   
头像 等级:初学者
积分:9
财富值:2
身份:普通用户
2023年6月24日新更新的日志表明,并没有解决这个删除对象的BUG,为更清楚说明情况,特上传一个带对象的文件,希望能在下一版本更新这个问题,谢谢!
附件:   下载    在线编辑
我的个性签名
发表于 2023/6/29 9:28:06   
头像 等级:初学者
积分:9
财富值:2
身份:普通用户

详细BUG原因已在旧贴中说明:就是直接点删除对象,没有反应,全选表格之后点删除对象会将批注一起删除。

虽然用VBA可以解决问题,但用习惯了方方格子用起来比较方便,尤其是聚光灯,虽然因为使用EXCEL较简单应用并没有充值会员,但仍希望能解决这个问题。

附网上找到的VBA删除对象代码:

Sub 删除对象()
Dim sheet As Worksheet
For Each sheet In Worksheets
     sheet.DrawingObjects.Delete
Next sheet
End Sub



VBA查询对象数量代码如下:

Sub CountShapes()
  Dim n As Double
  Dim ws As Worksheet
  Dim Content As String
  For Each ws In Worksheets
  n = ws.Shapes.Count
  Content = Content & "工作表" & ws.Name & " 有" & n & " 个对象" & vbCrLf
  Next
  MsgBox Content
End Sub


以下为CHATGPT生成代码:
Sub DeleteObjects()
    '定义变量
    Dim objCount As Integer
    Dim i As Integer
    Dim response As Integer
    
    '查询对象数量
    objCount = ActiveSheet.Shapes.Count
    
    '如果没有对象,则提示无对象
    If objCount = 0 Then
        MsgBox "无对象可删除!", vbInformation
        Exit Sub
    End If
    
    '弹出确定和取消选项框
    response = MsgBox("共有 " & objCount & " 个对象,是否全部删除?", vbYesNo + vbQuestion, "删除对象")
    
    '如果选择确定,则删除对象
    If response = vbYes Then
        On Error Resume Next
        For i = objCount To 1 Step -1
            ActiveSheet.Shapes(i).Delete
        Next i
        On Error GoTo 0
        MsgBox "已删除 " & objCount & " 个对象。", vbInformation
    '如果选择取消,则退出子程序
    Else
        Exit Sub
    End If
End Sub

我的个性签名
发表于 2023/6/29 11:50:18   
头像 等级:初学者
积分:9
财富值:2
身份:普通用户
注:上面的CHATGPT生成的那些代码,就是会将所有批注也一起删除。
我的个性签名

快速回复

目前不允许游客发表,请 登录 注册 后再发贴。