VBA 对工作簿中的对象进行计数,查看在每个工作表中实际存在的对象数量,如果此数量不合理,就说明有问题。打开可能存在的Excel表格,打开后按<Alt+F11>打开VBA 编辑器窗口,单击菜单插入模块来插入一个新模块,默认情况下为模块1”,然后在模块1 的代码窗口中“复制”、“粘贴”以下代码:
    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
    最后,F5 键来运行这段代码,就能看到检查结果。在看似空白的工作表中,存在着大量
的图形对象

   如果确认在工作表中存在大量的对象,而用户并不需要它们,可以用两种方法来处理:
    1)用“ctrl+G”定位方法中,当对象全部处于被选择状态时按<Delete>键删除它们即可。
    2在刚才“模块1”中删除刚才“短代码”,“复制”、“粘贴”以下“长代码”,即在多个工作表中更加精确地删除这些无用对象。比如,可以根据需要只删除高度和宽度都小于125.25 磅(10 cm)的对象。
    只删除活动工作表中特定大小的对象的代码为:
    Sub DelShapes()
    Dim sp As Shape, n
    For Each sp In ActiveSheet.Shapes
    If sp.Width < 10.25 And sp.Height < 10.25 Then
    sp.Delete
    n = n + 1
    End If
    Next sp
    MsgBox "共删除了" & n & "个对象"
    End Sub
    删除所有工作表中的特定大小的对象的代码为:
    Sub DelAllShapes()
    Dim ws As Worksheet
    Dim sp As Shape
    Dim n As Double
    Dim Content As String
    For Each ws In Worksheets
    For Each sp In ws.Shapes
    If sp.Width < 125.25 And sp.Height < 125.25 Then
    sp.Delete
    n = n + 1
    End If
    Next
    Content = Content & "工作表" & ws.Name & " 删除了" & n & " 个对象" & vbCrLf
    n = 0
    Next
    MsgBox Content
    End Sub
   
delete删除表格还是内容
还是按“F5”运行。
这些令人疑惑的对象的产生原因可能有以下几个。从网页上复制内容后直接粘贴到工作表中,而没有使用选择性粘贴。无意中使用绘图工具栏的直线工具或其他绘图工具,不知不觉中在工作表中插入了小的直线或其他图形对象,由于尺寸很小,于肉眼几乎无法看到。而后,又通过单元格的复制产生了大量的小绘图对象。在工作表中插入了图片或其他绘图对象,操作中又将其高度宽度设为0 或很小的值,通过复制产生了大量的对象。
    在行或列的位置中插入了绘图对象,对象的属性为大小位置随单元而变的(默认的)
然后隐藏行或列,或设置行高或列宽为很小的值,从而使插入的对象不能看到。工作表中的对象设置了不可见属性(Visible=false),或对象的线条与填充均设与背景相同,使对象无法被看到。 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。