寻故 2024-10-30 12:31 采纳率: 50%
浏览 10
已结题

方法range作用于对象worksheet时失败

方法range作用于对象worksheet时失败
多了就会报错,少的时候没事

Dim oldValue As String
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("C2") Then
       Worksheets("Sheet3").Range("M2") = oldValue
       Worksheets("Sheet3").Range("N2") = Date
         If Worksheets("Sheet3").Range("P2").Value = 1 Then
            Worksheets("G网号").Range("E2")[]([]([]())).Value = Worksheets("G网号").Range("D2").Value
            Worksheets("G网号").Range("D2").Value = Worksheets("Sheet3").Range("M2").Value
         End If
    End If

    If Target = Range("G2") Then
       Worksheets("Sheet3").Range("M6") = oldValue
       Worksheets("Sheet3").Range("N6") = Date
         If Worksheets("Sheet3").Range("P6").Value = 1 Then
            Worksheets("G网号").Range("I2").Value = Worksheets("G网号").Range("H2").Value
            Worksheets("G网号").Range("H2").Value = Worksheets("Sheet3").Range("M6").Value
         End If
    End If

    If Target = Range("K2") Then
       Worksheets("Sheet3").Range("M10") = oldValue
       Worksheets("Sheet3").Range("N10") = Date
         If Worksheets("Sheet3").Range("P10").Value = 1 Then
            Worksheets("G网号").Range("M2").Value = Worksheets("G网号").Range("L2").Value
            Worksheets("G网号").Range("L2").Value = Worksheets("Sheet3").Range("M10").Value
         End If
    End If
    
    If Target = Range("O2") Then
       Worksheets("Sheet3").Range("M14") = oldValue
       Worksheets("Sheet3").Range("N14") = Date
         If Worksheets("Sheet3").Range("P14").Value = 1 Then
            Worksheets("G网号").Range("B5").Value = Worksheets("G网号").Range("P2").Value
            Worksheets("G网号").Range("P2").Value = Worksheets("Sheet3").Range("M14").Value
         End If
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    oldValue = Cells(Target.Row, Target.Column).Value
End Sub
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_50555322/article/details/143360973

  • 写回答

1条回答 默认 最新

  • 丨Haruna 2024-10-30 14:14
    关注

    你的代码每次对符合条件的单元格进行更改都会触发 Worksheet_Change 事件,如果同时更新多个单元格,则会导致递归调用。尝试在代码运行时暂时禁用事件。

    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        ' 你的代码
        Application.EnableEvents = True
    End Sub
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 创建了问题 10月30日