Как сбросить изображение обратно из художественного эффекта в Excel VBA

#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