|
>急に難しくなりました。
>私の環境下では、サンプルとは少し違い
>、今以下のコードを使って、AI列の数字が変わったときAH列の数字より大きいとき、
>AI列の数字の背景が赤、小さいとき緑に変わるようにしました。
>
>===============================================================
>Private Sub Worksheet_Calculate()
> On Error Resume Next
> Dim i As Long
> For i = 2 To 301
> With Cells(i, 35)
> If Cells(i, 34).Value <> 0 Then
> If .Value > Cells(i, 34).Value Then
> .Interior.ColorIndex = 3
> .Font.ColorIndex = 2
> ElseIf .Value < Cells(i, 34).Value Then
> .Interior.ColorIndex = 10
> .Font.ColorIndex = 2
> End If
> End If
> End With
> Next i
>End sub
>============================================================
>AH列の数字はAI列の数字の変化前の数字が来るようにしてありますのでやりたいことは実現しているわけです。
>しかし今回の新しく示してもらったコードを適用しようとすると、変化した数字のところではなくその他いくつかの部分が赤く点滅します。
>(i,1)の部分を(i,35)に変えてみるとA列ではなく、AI列が点滅するようになりましたが、数字が変化したところの上下いくつか離れた場所が点滅します。
私のコードをそのまま使用したときはどうでしたか?
私のところでは問題なく動いています。
>しかも赤色のみの点滅です。
そのようにしましたが?
>>それは、数字が変化するとき、背景が3回ぐらい点滅して赤く変わるようにできないかと思いました。
と質問されているので。
>ちょっと今回の例題のコードを解読したいのでいくつか質問します。
>
>1.rng = rng & i & ","
>のrng というのはどこで定義しているのでしょうか?
↓ここです
> Dim i As Long, rng As String, cnt As Variant
>またrng & i & ","の意味は?
i を","区切りの文字列にしています。
区切り文字は","でなくても構いません( @ や / などでもOK)
> End With
> Next i
の後に
Debug.Print rng
と入れて確認してみてください
>
>2.For j = LBound(cnt) To UBound(cnt)
>のLBound、UBoundの使い方にとまどっています。
>(定義は調べたが、その意味がいまいちよくわからない)
配列のインデックス番号の下限(LBound)、上限(UBound)を調べられます。
試してみてください。
Sub test()
Dim test1(0 To 5) As Integer
Dim test2(2 To 8) As Integer
Debug.Print LBound(test1), UBound(test1), LBound(test2), UBound(test2)
End Sub
※私は、LowerBound、UpperBound として覚えています。
>3.cnt = Split(Left(rng, Len(rng) - 1), ",")
>の意味の解読が難しいです。
区切り文字を元に文字列を分割しています。
Left(rng, Len(rng) - 1) は右端の余分な区切り文字を取り除いてます。
|
|