问题描述
我想弄清楚一些事情。我的 Excel 文件中有一张图片。每当我点击它时,我希望它变成灰度,所以我使用以下 vba 代码:
Sheets("Dashboard-3").Shapes("ReportsIcon").Fill.PictureEffects.Insert msoEffectPencilGrayscale
而且它工作得很好。但是当我再次单击时,我希望它恢复到原来的颜色和格式(这是 Excel 中的 Reset Picture
按钮)。不幸的是,录制宏并没有做到这一点。我使用 msoEffectNone
、msoEffectTypeNone
,但不起作用。也搜索了很多,但似乎没有人试图重新设置艺术效果。有没有人知道我应该使用什么?
解决方法
您不需要设置不同的效果,您必须使用 Delete
从分配给图片的 PictureEffects 列表中删除它。以下 Sub 显示了如何切换它(如果存在,则将其删除,否则应用)
Sub toggleEfect(sh As Shape,efecttype As Long)
Dim fe As PictureEffect,found As Boolean
For Each fe In sh.Fill.PictureEffects
If fe.Type = efecttype Then
fe.Delete
found = True
End If
Next
If Not found Then sh.Fill.PictureEffects.Insert efecttype
End Sub
你可以调用它
toggleEfect Sheets("Dashboard-3").Shapes("ReportsIcon"),msoEffectPencilGrayscale