2016-12-19 4 views
0

У меня есть изображение в моем листе, что я хочу исчезнуть. Для этого я привязывания, чтобы найти способ установки различных этапов прозрачности для изображения как так:vba контроль изображение прозрачность возможно?

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 

На данный момент я получаю объект не поддерживается сообщение об ошибке, которое заставляет меня верить, что это не может быть возможное.

Если возможно, пожалуйста, смогите somoene показать мне, как это сделать? Благодаря

+0

Вы можете использовать API SetLayeredWindowAttributes для установки прозрачности формы. Ему нужен hWnd, поэтому я не думаю, что это будет возможно с изображением. –

+0

Получаете ли вы ту же ошибку, если используете вместо этого метод '.Picture.Insert',' .Shapes.AddPicture'? –

ответ

0

Это мне потребовалось много времени, чтобы получить эту работу (пока я не попробовал 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 

Он работает на Автоформе я место на листе.

Примечание:

Вы должны настроить для регулировки Fade-в/исчезать из скорости.

EDIT # 1:

Вот некоторые нездоровой код (на основе Recorder) для сбрасывания автофигуры на листе и наполняя его Картина:

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 

Оставаться в Назовите форму и используйте это имя во всех кодах, которые ссылаются на Shape.

+0

спасибо за это, но это не будет работать для изображения, не так ли? –

+0

, если я использую форму вместо изображения, есть ли вообще добавить фоновое изображение в форму? –

+1

@ Bing.Wong ** ДА ** - зайдите позже ..... –