excel - 引用图标/形状的范围
问题描述
我正在尝试将宏分配给放大镜图标。
此宏将相对于包含放大镜图标的单元格将单元格的值复制到左侧四列。
如何引用包含放大镜等对象的范围?
这个想法是将放大镜复制到该列的每一行中。
例如,在下图中,当我单击放大镜时,它会调用分配的 VBA 程序并复制值“LA COE”。
解决方案
每个形状都有一个TopLeftCell
和一个BottomRightCell
属性,您可以使用它:
Sub CopyCellValue()
Dim s As Shape
Debug.Print Application.Caller
Set s = ActiveSheet.Shapes(Application.Caller)
s.TopLeftCell.Offset(0, -4).Copy 'Or whatever
End Sub
Application.Caller
然后将保存分配宏的形状的名称,因此您可以将完全相同的宏分配给每个放大类。
只需确保您的图标真正放置在您想要的单元格中。如果您尝试将它们与角对齐(例如,按住 alt 拖动形状角之一),这可能会特别咬你,在这种情况下TopLeftCell
/BottomRightCell
可能会引用相邻的单元格。