2016-12-19 3 views
0

J'ai une image dans ma feuille de travail que je veux fondre. Pour ce faire, je suis liais de trouver un moyen de mettre les différentes étapes de la transparence de l'image comme ceci:vba control image transparence possible?

Set myPicture = ActiveSheet.Pictures.Insert(pic) 

With myPicture 
.Transparency = 0.5 
Application.Wait (Now + TimeValue("00:00:01")) 
.Transparency = 0.3 
Application.Wait (Now + TimeValue("00:00:01")) 
.Transparency = 0.1 
Application.Wait (Now + TimeValue("00:00:01")) 
.Delete 
End With 

Au moment où je reçois un message d'erreur objet non supporté qui me porte à croire cela peut ne pas être possible.

Si possible, s'il vous plaît pouvez-vous me montrer comment faire cela? Merci

+0

Vous pouvez utiliser l'API SetLayeredWindowAttributes pour définir la transparence d'un formulaire. Il faut cependant un hWnd, donc je ne pense pas que ce soit possible avec une image. –

+0

Avez-vous la même erreur si vous utilisez à la place de la méthode '.Picture.Insert', celle de' .Shapes.AddPicture'? –

Répondre

0

Il m'a fallu beaucoup de temps pour obtenir ce travail (jusqu'à ce que je l'ai essayé DoEvents)

Sub FadeInFadeOut() 
    Dim r As Range 
    Set r = Selection 
    ActiveSheet.Shapes("Rectangle 1").Select 
    Selection.ShapeRange.Fill.Transparency = 1 

    For i = 1 To 100 
     Selection.ShapeRange.Fill.Transparency = 1 - i/100 
     DoEvents 
    Next 

    For i = 1 To 100 
     Selection.ShapeRange.Fill.Transparency = i/100 
     DoEvents 
    Next 

    r.Select 
End Sub 

Il fonctionne sur un AutoShape je place sur la feuille.

REMARQUE:

Vous devez régler la pour régler le fade-in/fade-out vitesse.

EDIT # 1:

Voici un code indésirable (basé sur l'enregistreur) pour laisser tomber une forme automatique sur une feuille et de le remplir avec une image:

Sub PicturePlacer() 
    Dim sh As Shape 

    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 312.75, 176.25, 266.25, 129.75). _ 
     Select 

    Selection.Name = "Sargon" 

    Application.CommandBars("AutoShapes").Visible = False 
    Range("G4").Select 
    ActiveCell.FormulaR1C1 = "123" 
    Range("G5").Select 
    ActiveSheet.Shapes("Sargon").Select 
    Selection.ShapeRange.Fill.Transparency = 0.56 
    Selection.ShapeRange.Line.Weight = 0.75 
    Selection.ShapeRange.Line.DashStyle = msoLineSolid 
    Selection.ShapeRange.Line.Style = msoLineSingle 
    Selection.ShapeRange.Line.Transparency = 0# 
    Selection.ShapeRange.Line.Visible = msoTrue 
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 64 
    Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255) 
    Selection.ShapeRange.Fill.Visible = msoTrue 
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255) 
    Selection.ShapeRange.Fill.BackColor.RGB = RGB(255, 255, 255) 
    Selection.ShapeRange.Fill.UserPicture "C:\Users\garys\Pictures\babies.jpeg" 
End Sub 

Rappelez-vous Nommez la forme et utilisez ce nom dans tous les codes qui font référence à cette forme.

+0

merci pour cela, mais cela ne fonctionnera pas pour une image le sera? –

+0

Si j'utilise une forme au lieu d'une image, est-il possible d'ajouter une image de fond à la forme? –

+1

@ Bing.Wong ** OUI ** - Revenez plus tard ..... –