Excel VBA 如何从艺术效果重置图片
How to reset picture back from artistic effect in Excel VBA
我在想办法。我的 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
我在想办法。我的 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