【发布时间】:2014-09-27 15:57:21
【问题描述】:
由于某种原因,当我使用插入行代码时,它会一直插入新行!我写的代码在一开始有一个do while循环遍历C列中的所有单元格,当它到达C列中的一个空单元格时,一个变量会保留单元格编号。
然后我编写了另一个子例程(当电子表格上的某些内容发生更改时调用该子例程),如果在 C 列的空单元格中写入了某些内容,则插入新行。但它会一直持续下去!
以下代码在一个模块下
Dim a, count As Integer
Sub check()
a = 0
count = 3
Do While a = 0
count = count + 1
If Range("C" & count).Value = "" Then
a = 1
End If
Loop
End Sub
Sub addrow()
If Range("C" & count).Value <> "" Then
Range("C" & count).Offset(1).EntireRow.Insert
count = count + 1
With Range("B" & count, "AL" & count)
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
End With
End If
End Sub
这个代码在工作表下面
Private Sub Worksheet_Change(ByVal Target As Range)
addrow
End Sub
当工作簿打开时,子程序“CHECK”被调用。
我不知道为什么会有一个无限循环!请帮忙。
谢谢
【问题讨论】:
-
在您的
Private Sub Worksheet_Change事件中,在addrow之前添加Application.EnableEvents=False,在addrow之后添加Application.EnableEvents=True。原因很简单——worksheet_change事件插入新行,插入行触发worksheet_change事件。 W_change 事件插入新行,以此类推。无限循环:) -
欢迎使用递归 :-) 您的更改事件由模块本身触发。按照@simoco 的建议去做
标签: excel excel-2007 excel-2010 vba