gpt4 book ai didi

excel - 如何使用VBA将选定的图像移到前面

转载 作者:行者123 更新时间:2023-12-03 02:04:39 24 4
gpt4 key购买 nike

场景:我在一个工作表中有大量图像,其中许多图像相互重叠。

如何编写 VBA 代码,以便当用户单击该工作表中的任何图像时,Excel 会自动将该图像置于前面?

最佳答案

如果您想将一个对象 myObject 放在您使用的前面

myObject.ShapeRange.Zorder msoBringToFront

http://msdn.microsoft.com/en-us/library/office/aa213680(v=office.11).aspx

您的对象可能是选择:

set myObject = Selection

至于响应点击 - 这比较棘手。似乎没有“选择图片”事件。但是有一个解决方案......

您可以创建一个名为 Picture_click() 的宏,并将该宏分配给每张图片。似乎没有事件驱动的方法来实现这一点,但以下方法有效:

将以下内容添加到模块中:

Sub picture_click()
ActiveSheet.Shapes(Application.Caller).Select
Selection.ShapeRange.ZOrder (msoBringToFront)
End Sub

Sub connect_all()
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
sh.OnAction = "picture_click"
Next sh
End Sub

您只需运行 connect_all 子程序一次,即可将 picture_click 宏分配给每个形状。现在,当您单击图片(或其他形状)时,它会出现在前面。

注意 - Application.Caller 会告诉您单击了哪个对象 - 换句话说,是什么导致了对 picture_click 的调用。这是必要的,因为“单击”不会导致图片被选择 - 这发生在宏运行之后。所以你不能只使用选择。棘手的是。

我引用了this earlier post提出这个解决方案 - 具体来说,RichJ 的解决方案。

事后思考

如果您不想在单击图片后选择图片,可以将 picture_click() 子函数修改为以下内容:

Sub picture_click()
ActiveSheet.Shapes(Application.Caller).ZOrder msoBringToFront
End Sub

这会将图片移到前面,但不会选择它。对于这种方法有一些话要说。

关于excel - 如何使用VBA将选定的图像移到前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24043739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com