VBA宏崩溃

时间:2016-06-15 14:13:09

标签: excel vba excel-vba macros

我尝试创建一个宏,但是当它启动时,excel不会处理它并崩溃。

这是宏:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim sous As Integer
If Not IsEmpty(Cells(4, 2)) And IsNumeric(Cells(4, 2).Value) And Not IsEmpty(Cells(4, 3)) And IsNumeric(Cells(4, 3).Value) Then
    For i = Cells(4, 3).Value To Cells(4, 2).Value
        sous = i - Cells(4, 3).Value
        Cells(5 + sous, 4).Value = i
    Next i
MsgBox "Yataaaah"
End If
End Sub

问题是行Cells(5 + sous, 4).Value = i,因为如果我把它放在评论上,那就可以了。

任何人都知道为什么excel无法处理它?<​​/ p>

非常感谢你。 Ps:我在mac上,我使用的是Excel 15.19.1

1 个答案:

答案 0 :(得分:3)

你必须关闭事件。 Excel崩溃的原因是选择更改事件更改了触发选择更改事件的值。它陷入无休止的循环中。

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim i As Integer
    Dim sous As Integer
    If Not IsEmpty(Cells(4, 2)) And IsNumeric(Cells(4, 2).Value) And Not IsEmpty(Cells(4, 3)) And IsNumeric(Cells(4, 3).Value) Then
        For i = Cells(4, 3).Value To Cells(4, 2).Value
            sous = i - Cells(4, 3).Value
            Cells(5 + sous, 4).Value = i
        Next i
        MsgBox "Yataaaah"
    End If

    Application.EnableEvents = True
End Sub