Vba 在特定条件下保持电池不变

Vba 在特定条件下保持电池不变,vba,excel,cell,Vba,Excel,Cell,我正在寻找一种方法,每次另一个单元格处于活动状态时,都在单元格中保留一个公式 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 所以,

我正在寻找一种方法,每次另一个单元格处于活动状态时,都在单元格中保留一个公式

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
所以,如果单元格AL2等于1(我想要的活动单元格),我希望单元格AK14中有一个特定的值。 若单元格AL2不等于1,我只想保持AK14中的值不变(例如,有人可以覆盖它)

此时Excel似乎丢失了第二部分:
如果AL2=0,我得到一个错误

如果我需要两个条件,我是否需要另一个条件

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

所以我想要这两个宏..

当您更改单元格中的值时,在
工作表\u 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
一起使用是一个很好的实践:

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