首页 > 解决方案 > 引用图标/形状的范围

问题描述

我正在尝试将宏分配给放大镜图标。

此宏将相对于包含放大镜图标的单元格将单元格的值复制到左侧四列。

如何引用包含放大镜等对象的范围?

这个想法是将放大镜​​复制到该列的每一行中。

例如,在下图中,当我单击放大镜时,它会调用分配的 VBA 程序并复制值“LA COE”。

放大镜_玻璃_示例
在此处输入图像描述

标签: excelvba

解决方案


每个形状都有一个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可能会引用相邻的单元格。


推荐阅读