#excel #vba #formatting #shapes #effect
Вопрос:
Я пытаюсь кое — что выяснить. У меня есть фотография в моем файле Excel. Всякий раз, когда я нажимаю на него, я хочу, чтобы он стал оттенками серого, поэтому я использую следующий код vba:
Sheets("Dashboard-3").Shapes("ReportsIcon").Fill.PictureEffects.Insert msoEffectPencilGrayscale
И это работает совершенно нормально. Но затем я хочу, чтобы он вернулся к своему первоначальному цвету и форматированию, когда я снова нажму (это Reset Picture
кнопка в Excel). к сожалению, макрос записи этого не понимает. Я использую msoEffectNone
, msoEffectTypeNone
, но не работает. Также много искал, но, похоже, никто не пытался вернуть художественные эффекты обратно. Кто-нибудь имеет представление, что мне следует использовать?
Ответ №1:
Вам не нужно устанавливать другой эффект, вы должны удалить его с Delete
помощью из списка эффектов изображения, которые назначены изображению. В следующем разделе показано, как его переключить (если он присутствует, он удаляется, в противном случае применяется).
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