如何在VBA中将选中的多个图形存储到变量以实现重复选中?
解决VBA中保存选中图形并重新选中的问题
你当前的代码存在两个关键问题:
- 单个
Shape对象只能存储一个图形,无法保存多个选中的图形集合 Set S = ActiveSheet.Shapes(Selection)的赋值方式错误,当选中多个图形时无法通过这种方式获取集合
要实现保存多个选中图形并后续重新选中的需求,应该使用ShapeRange对象——它专门用于存储多个图形的集合。
以下是修正后的代码:
Sub SaveAndReselectShapes() ' 声明用于存储选中图形集合的变量 Dim selectedShapes As ShapeRange ' 先判断当前选中的是否为图形集合,避免报错 If TypeName(Selection) = "ShapeRange" Then ' 将选中的所有图形保存到变量中 Set selectedShapes = Selection ' 在这里执行你对图形的修改操作,比如调用你的格式化或调整尺寸的子程序 ' Call format_select ' Call Resize_selected_row_Click ' 重新选中之前保存的所有图形 selectedShapes.Select End If End Sub
代码说明:
ShapeRange是VBA中专门处理多图形集合的对象,能完整保留选中图形的集合信息- 通过
TypeName(Selection)做判断,确保只有选中图形时才执行后续逻辑,避免非图形选中状态下的报错 - 修改完成后,直接调用
selectedShapes.Select即可一键重新选中之前保存的所有图形
内容的提问来源于stack exchange,提问作者Mario LoCoco
相关产品推荐
相关产品推荐

