我想了解如何解决我的问题。 这是情况: 我在A2或B2领域输入值。在I2字段中,有一个公式应解析A2中的输入值:
=IF(LEFT([@[Value 1]];3) = "240";MID([@[Value 1]];4;9);IF(LEFT([@[Value 2]];3)="240";MID([@[Value 2]];4;9);""))
使用VBA我将值从I2复制到C2。我这样做是因为我想让用户更改该值,但因此不要删除字段中的公式。 问题是,当我在下面的行中输入值时,用户在C2中更改的值将再次从I2字段中复制。
我的代码:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim LastRow1 As Integer
Dim Row1 As Integer
Dim LastRow2 As Integer
Dim Row2 As Integer
Dim LastRow3 As Integer
Row2 = WorksheetFunction.Match(Target, Range("I:J"), 0)
LastRow2 = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
If Not Intersect(Target, Range("A1:A" & LastRow2)) Is Nothing Then
For Row2 = 2 To LastRow2
Cells(Row2, 3) = Range("I" & Row2).Value
Next Row2
End If
End Sub
程序示例:
A2值= 24089745312045697845 I2中的公式解析了这个= 897453120 并将此值复制到C2
C2中的用户更改值,所以我可以说他在那里写了MODIFIED。
下一步: A3值= 24053698712664234789 I3中的公式解析了这个= 536987126 并将此值复制到C3 但同时,C2中的值更改回897453120 - 我想在那里保持单词MODIFIED。
答案 0 :(得分:0)
如果我理解正确的话......
For Row2 = 2 To LastRow2
'value has been already changed, do not recalculate
If Cells(Row2, 3) <> Range("I" & Row2) Then GoTo SkipNext
Cells(Row2, 3) = Range("I" & Row2)
SkipNext:
Next Row2
注意:如果用户已将&#34; C1&#34; 清理为&#34; C&#34; &安培;第2行范围。
If Cells(Row2, 3) <> "" Then GoTo SkipNext