[英]How can I replace single cell references with ranges
我有 5 列((a)uptick,(b)downtick,(c)original,(d)current)和(e)存儲值。 所有列都必須是一系列行。 當 d2 更改時,我想將其與 e2 進行比較,如果 d2>e2 則將 a2 中的計數器增加 1(上升),如果 d2<e2 則將 b2 中的計數器撞擊(下降)。 我讓它與許多 if 和 elseif 語句一起使用,但寧願使用更少的代碼來使用范圍內的變量。 為了檢測變化的單元格,我使用“If Not Intersect (Target, Range("d2:d10")) Is Nothing Then....”
我似乎無法弄清楚如何用范圍替換特定的單元格引用。 非常感激任何的幫助!
下面的示例代碼尚未使用范圍。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D2:D10")) Is Nothing Then
If Target.Value > Range("E2") Then
Range("A2") = Range("A2") + 1
Pause 2#
Range("E2") = Target.Value
ElseIf Target.Value < Range("E2").Value Then
Range("B2") = Range("B2") + 1
Pause 2#
Range("E2") = Target.Value
End If
End If
End Sub
我假設您要更改在 D 列中輸入值的同一行中的單元格值,即如果 D4 已更改,則調整 A4 或 B4。 為此,您需要更改單元格的行號。 您可以使用target.row
提取它。 將其放入變量中並使用該變量而不是 Range() 屬性中的行號。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D2:D10")) Is Nothing Then
dim myRow as long
myRow = target.row
If Target.Value > Range("E" & myRow) Then
Range("A" & myRow) = Range("A" & myRow) + 1
Pause 2#
Range("E" & myRow) = Target.Value
ElseIf Target.Value < Range("E" & myRow).Value Then
Range("B" & myRow) = Range("B" & myRow) + 1
Pause 2#
Range("E" & myRow) = Target.Value
End If
End If
End Sub
您可以使用.Offset
獲得相同的結果。 以下代碼假定您只對范圍D2:D10
感興趣,並且不關心列D
中的值是否等於列E
中的值。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("D2:D10"), Target) Is Nothing Then
If Target.Rows.Count > 1 Then Exit Sub
If Target > Target.Offset(, 1) Then
Target.Offset(, -3) = Target.Offset(, -3) + 1
Else
If Target < Target.Offset(, 1) Then
Target.Offset(, -2) = Target.Offset(, -2) + 1
End If
End If
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.