8

次のようなマクロを作成する必要があります。 A1 を黒色で塗りつぶします。次に、マクロを実行すると、A2 は少し明るくなり、A3 はさらに明るくなり、A20 が白くなるまで続きます。「F5」セル値は、勾配指数の程度を制御する必要があります。現在のコードは、比例して色を変更します。「F5」の値を変更すると (たとえば、1 から 0.7 に)、20 個のセル (「A1:A20」) のすべてが均等に暗くなります。そして、最後のセル A20 はもう白ではありません。

ただし、最初のセル「A1」を黒く、最後のセル「A20」を必ず白くする必要があります...そして、セルの色の分布は指数関数的である必要があります。つまり、A1 と A2 の暗さの差です。 A3 と A2 の暗さの差の 2 倍 (「F5」==2 の場合) にする必要があります。

Sub Macro3()

    Dim firstCell As Range 'the first cell, and the cell whose color will be used for all others.
    Dim cellColor As Long 'the cell color that you will use, based on firstCell
    Dim allCells As Range 'all cells in the column you want to color
    Dim c As Long  'cell counter
    Dim tintFactor As Double 'computed factor based on # of cells.
    Dim contrast As Double 'double precision factor for changing the contrast 0= none higher is more

    Set firstCell = Range("A1")
    cellColor = firstCell.Interior.Color
    contrast = Range("F5").Value


    Set allCells = Range("A1:A20")

    For c = allCells.Cells.Count To 1 Step -1
        allCells(c).Interior.Color = cellColor
        allCells(c).Interior.TintAndShade = _
            contrast * (c - 1) / (allCells.Cells.Count -1)

    Next

contrast「F5」の変数の値を変更すると、色の変化が指数関数的になるように、上記のどの関数を実装する必要があるのか​​ わかりません。// と

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F5")) Is Nothing Then
        Call Macro3
    End If
End Sub

ここに画像の説明を入力

4

2 に答える 2