Set gradient using VBA

YasserKhalil
PlatinumLounger
Posts: 4931
Joined: 31 Aug 2016, 09:02

Set gradient using VBA

Post by YasserKhalil »

Hello everyone
I have recorded a macro to set the gradient for cell

Code: Select all

Sub Macro1()
'
' Macro1 Macro
'

'
    With Selection.Interior
        .Pattern = xlPatternRectangularGradient
        .Gradient.RectangleLeft = 0.5
        .Gradient.RectangleRight = 0.5
        .Gradient.RectangleTop = 0.5
        .Gradient.RectangleBottom = 0.5
        .Gradient.ColorStops.Clear
    End With
    With Selection.Interior.Gradient.ColorStops.Add(0)
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    With Selection.Interior.Gradient.ColorStops.Add(1)
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
End Sub
How can I abbreviate such a code? What is the most important parts?

User avatar
HansV
Administrator
Posts: 78573
Joined: 16 Jan 2010, 00:14
Status: Microsoft MVP
Location: Wageningen, The Netherlands

Re: Set gradient using VBA

Post by HansV »

Here is a slightly shorter version:

Code: Select all

Sub Macro1()
    With Selection.Interior
        .Pattern = xlPatternRectangularGradient
        With .Gradient
            .RectangleLeft = 0.5
            .RectangleRight = 0.5
            .RectangleTop = 0.5
            .RectangleBottom = 0.5
            With .ColorStops
                .Clear
                .Add(0).ThemeColor = xlThemeColorDark1
                .Add(1).ThemeColor = xlThemeColorLight1
            End With
        End With
    End With
End Sub
And the minimum:

Code: Select all

Sub Macro2()
    With Selection.Interior
        .Pattern = xlPatternRectangularGradient
        With .Gradient
            .RectangleLeft = 0.5
            .RectangleRight = 0.5
            .RectangleTop = 0.5
            .RectangleBottom = 0.5
            .ColorStops(1).ThemeColor = xlThemeColorDark1
            .ColorStops(2).ThemeColor = xlThemeColorLight1
        End With
    End With
End Sub
(This uses the default ColorStops at positions 1 and 2)
Best wishes,
Hans

YasserKhalil
PlatinumLounger
Posts: 4931
Joined: 31 Aug 2016, 09:02

Re: Set gradient using VBA

Post by YasserKhalil »

Thank you very much Mr. Hans
Best Regards