vba - Excel VBA:如何删除特定范围内的图像
问题描述
我有一个从选定文件导入数据的宏。数据包括一些图像。我遇到的问题是,如果我的文档中已经有数据和图像,并且我去导入新数据,图像不会删除,而是简单地粘贴在彼此之上。我编写了代码来选择单元格并清除它们,但它不会清除图像。
我认为解决方案是在导入新数据之前在开头放置一些代码,可以选择单元格范围内的图像并删除它们。
我遇到了一个解决方案,可以选择工作表中的所有图像并删除它们,但我还有其他图像需要保留。
是否可以告诉它选择特定单元格范围内的所有图像?
解决方案
一个快速的谷歌搜索(大多数问题都在一个地方或另一个地方被问过)得出了这个结果。它使用 Excel 图片对象的 TopLeftCell 和 BottomRightCell 属性,然后检查它是否在范围内。
Sub test()
'Code by Peter T from https://www.excelbanter.com/excel-programming/404480-select-delete-all-pictures-given-range.html
Dim s As String
Dim pic As Picture
Dim rng As Range
' Set ws = ActiveSheet
Set ws = ActiveWorkbook.Worksheets("Sheet2")
Set rng = ws.Range("A5:C25")
For Each pic In ActiveSheet.Pictures
With pic
s = .TopLeftCell.Address & ":" & .BottomRightCell.Address
End With
If Not Intersect(rng, ws.Range(s)) Is Nothing Then
pic.Delete
End If
Next
End Sub
我没有测试过这段代码,但即便如此,它也应该为您提供足够的信息来调整您自己的代码。
推荐阅读
- php - PHP 表示主图
- python - 使用带有图像标签的 csv 文件从文件夹中获取特定图像
- php - 在今天的错误日志文件中记录前一天的 PHP 日志错误
- vega-lite - vega-lite 中的动态尺度域
- android - 如果数据库中没有任何内容,如何显示“无数据”吐司
- javascript - 查看 p5.js 钢琴乐器的代码
- sql - 是否可以在 SQL 中按语句分区进行多次计算?
- angular - Angular/Ngx 翻译:动态显示从服务器获取的 currentLang
- r - dplyr group_by 并用组的函数替换所有列
- fortran - 每次使用包含模块时都会评估 Fortran 命名常量吗?