我正在寻找在每次其他单元格处于活动状态时将公式保留在单元格中的方法。
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.Range("AL2").Value = 1 Then
ActiveSheet.Range("AK14").Value = ActiveSheet.Range("AL8").Value
Else
End If
End Sub
因此,如果Cell AL2等于1(所以我想要的活动单元格),我希望在单元格AK14中具有特定值。 如果单元格AL2不等于1,我想保持AK14中的值不变(例如有人可以覆盖它)。
目前Excel似乎迷失了第二部分:if AL2 = 0
,我收到了错误。
如果我需要两个条件,我是否只需要另外一个If?
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Range("AL2").Value = 1 Then Range("F11").Value = Range("AK7").Value
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Range("AL2").Value = 2 Then Range("J11").Value = Range("AL7").Value
Application.EnableEvents = True
End Sub
所以我想拥有这两个宏..
答案 0 :(得分:2)
更改单元格中的值时,在Worksheet_Change
事件中,应禁用事件。否则,它开始自称:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Range("AL2").Value = 1 Then Range("AK14").Value = Range("AL8").Value
Application.EnableEvents = True
End Sub
然后,作为下一步,在.EnableEvents
使用Error-catcher是一个很好的做法:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Worksheet_Change_Error
Application.EnableEvents = False
If Range("AL2").Value = 1 Then Range("AK14").Value = Range("AL8").Value
Application.EnableEvents = True
On Error GoTo 0
Exit Sub
Worksheet_Change_Error:
Debug.Print "Error " & Err.Number & " (" & Err.Description & ") "
Application.EnableEvents = True
End Sub