Excel中有一段代码是这样的:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 2 And Target.Row >= 2 Then
Application.EnableEvents = False
If Target.Value = "" Then
Range("C" & Target.Row).Resize(1, 5).ClearContents
Else
Range("C" & Target.Row).Formula = "=AVERAGE(INDIRECT(" & Chr(34) & "B2:B" & Chr(34) & "&COUNTA(B:B)))"
Range("D" & Target.Row).Formula = "=B" & Target.Row & "-C" & Target.Row
Range("E" & Target.Row).Formula = "=STDEV(INDIRECT(" & Chr(34) & "B2:B" & Chr(34) & "&COUNTA(B:B)))"
Range("F" & Target.Row).Formula = "=(B" & Target.Row & "-C" & Target.Row & ")/E" & Target.Row
Range("G" & Target.Row).Formula = "=$J$3+$J$3/5*F" & Target.Row
End If
Application.EnableEvents = True
End If
End Sub
这一段代码有一个缺陷,就是如果数据是复制过来的,那么Change事件只能触发复制过来的第一个单元格的事件,其它单元格无法触发。
并且如果是选中一片B列区域删除,也只会删除选中的第一行的5个单元格,其它行的无法删除。
请问这样如何解决?是要用For吗?
Excel VBA 向动态变化区域加入或删除公式
答案:2 悬赏:60 手机版
解决时间 2021-03-07 14:43
- 提问者网友:聂風
- 2021-03-07 11:39
最佳答案
- 五星知识达人网友:行路难
- 2021-03-07 13:06
For 是一个办法。
resize那里,用resize(selection.rows.count,5)试试看
resize那里,用resize(selection.rows.count,5)试试看
全部回答
- 1楼网友:空山清雨
- 2021-03-07 13:50
sheet1.range("a2:c4").clearcontents就可以了。
删除指定区域的内容
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯