Sheet1上单元格中的值更改Sheet2上单元格中的颜色渐变

时间:2019-07-20 03:35:04

标签: excel vba

一段时间以来,我一直在尝试自己整理这些代码,但无法正常工作。 基本上我想做的是在Sheet1上有一个值表,在其中我输入1、1.1、1.2,...到5,并使每个单元格中的每个值对应于在Sheet2上的特定单元格中创建颜色渐变。

例如,如果我在Sheet1 B12中输入“ 1.1”,我希望Sheet2 B13使用特定的颜色渐变进行着色,该特定颜色渐变与Sheet1 B12包含“ 1.2”的情况稍有不同,并且此渐变将在1到5之间变化

到目前为止,我想我已经弄清楚了如何使用With和Case语句根据另一个单元格的值用渐变填充一个单元格。但是,我无法弄清楚如何使代码在工作表之间工作以及如何在Sheet1上更改单元格值并在Sheet2上更改颜色时自动运行。

<div class="page">hmmm<div>
 <style>
.page {
    height:1600px;
}

@page {
    size: A4;
    margin: 0;
}
@media print {
    html, body {
        width: 210mm;
        height: 297mm;        
    }
    .page {
        margin: 0;
        border: initial;
        border-radius: initial;
        width: initial;
        min-height: initial;
        box-shadow: initial;
        background: initial;
        page-break-after: always;
     }
    }
    </style>

我有两种情况都没有解决过,所以我最终没有编写数百行代码,而且没有用。一旦我知道它适用于这两种情况,我就可以一遍又一遍地复制它并按照自己的方式开发渐变,这样,Sheet2上的每个单元格都会根据Sheet1上相应单元格的值具有特定的渐变。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

将代码粘贴到Sheet1中,而不要粘贴到任何ModuleThisworkbook

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("B13")) Is Nothing Then

            Select Case Range("B13").Value

            Case 1.1

                    With Sheets("Sheet2").Range("B12").Interior
                        .Pattern = xlPatternLinearGradient
                        .Gradient.Degree = 180
                        .Gradient.ColorStops.Clear
                    End With

                    With Sheets("Sheet2").Range("B12").Interior.Interior.Gradient.ColorStops.Add(0)
                        .Color = RGB(0, 176, 0)
                        .TintAndShade = 0
                    End With

                    With Sheets("Sheet2").Range("B12").Interior.Interior.Gradient.ColorStops.Add(0.7)
                        .Color = RGB(0, 176, 80)
                        .TintAndShade = 0
                    End With

                    With Sheets("Sheet2").Range("B12").Interior.Interior.Gradient.ColorStops.Add(1)
                        .Color = RGB(255, 255, 255)
                        .TintAndShade = 0
                    End With
            Case 1.2

                    With Sheets("Sheet2").Range("B12").Interior.Interior
                        .Pattern = xlPatternLinearGradient
                        .Gradient.Degree = 180
                        .Gradient.ColorStops.Clear
                    End With

                    With Sheets("Sheet2").Range("B12").Interior.Interior.Gradient.ColorStops.Add(0)
                        .Color = RGB(0, 176, 80)
                        .TintAndShade = 0
                    End With

                    With Sheets("Sheet2").Range("B12").Interior.Interior.Gradient.ColorStops.Add(0.3)
                        .Color = RGB(0, 176, 80)
                        .TintAndShade = 0
                    End With

                    With Sheets("Sheet2").Range("B12").Interior.Interior.Gradient.ColorStops.Add(1)
                        .Color = RGB(255, 255, 0)
                        .TintAndShade = 0
                        End With
            End Select
    End If

End Sub

假设您的代码运行正常,那么只要sheet1上的值发生更改,它就会自动运行。