excel中,改正VBA代码(真的很有挑战)

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:19:05
Private Sub Worksheet_Change(ByVal my As Range)
On Error Resume Next

If my.Column = 2 Then
For Each rng In Range([b2], [b65536].End(xlUp))
If rng <> "" And rng(1, 2) <> Range("c1") Then rng(1, 2) = [$a$2] & rng
Next
End If

If my.Column = 2 Then
For Each rng In Range([b2], [b65536].End(xlUp))
If rng <> "" And rng(1, 3) <> Range("d1") Then rng(1, 3) = [$a$2] & rng
Next
End If

If my.Column = 2 Then
For Each rng In Range([b2], [b65536].End(xlUp))
If rng <> "" And rng(1, 5) <> Range("f1") Then rng(1, 5) = [$f$2]
Next
End If

End Sub
上面的代码可以运行,但是存在一个很严重的问题,当数据很多时,如果我再添加和改正b列中的某行数据时,更新的速度很慢,好像改正或添加b列中的某行数据时,以前添加的数据都要更新一遍,能不能改进一下代码,当添加和改正b列中的某行数据时,就只更新某行数据,其它行不要更新。请大大侠帮帮忙了

Private Sub Worksheet_Change(ByVal my As Range)
On Error Resume Next
If my.Column = 2 Then
If my <> "" And my(1, 2) <> Range("c1") Then my(1, 2) = [$a$2] & my
If my <> "" And my(1, 3) <> Range("d1") Then my(1, 3) = [$a$2] & my
If my <> "" And my(1, 5) <> Range("f1") Then my(1, 5) = [$f$2]
End If
End Sub

我只认识END SUB.真的很有挑战性。。