excel VBA中,for循环 什么时候需要设置跳出,什么时候又不需要设置跳出循环啊?谢谢
例如:Sub视()DimxAsInteger,kAsIntegerForx=2To16IfRange("A"&x)-1<>Range("A"&x-1)Thenk=1Els...
例如:
Sub 视()
Dim x As Integer, k As Integer
For x = 2 To 16
If Range("A" & x) - 1 <> Range("A" & x - 1) Then
k = 1
Else
k = k + 1
End If
Range("B" & x) = k
Next x
End Sub
上面的这个就没设置跳出循环……
而下面这个代码必须设置跳出否则老循环
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim sh1
Dim rg As Range
Dim x As Integer
If Sh.Name = "Sheet1" And Target.Address = "$E$5" Then
Workbooks.Open ThisWorkbook.Path & "/价格表.xls"
Set sh1 = Workbooks("价格表.xls").Sheets("sheet1")
For x = 2 To 7
If Sh.Range("$E$5") = sh1.Range("a" & x) Then
Sh.Range("$E$7") = sh1.Range("B" & x)
Exit For
End If
Next x
If x = 8 Then
Sh.Range("$E$7") = "查找不到"
End If
End If
End Sub
那么请问,都什么情况下设置EXIT for 跳出循环,什么时候又不用设置跳出啊?谢谢 展开
Sub 视()
Dim x As Integer, k As Integer
For x = 2 To 16
If Range("A" & x) - 1 <> Range("A" & x - 1) Then
k = 1
Else
k = k + 1
End If
Range("B" & x) = k
Next x
End Sub
上面的这个就没设置跳出循环……
而下面这个代码必须设置跳出否则老循环
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim sh1
Dim rg As Range
Dim x As Integer
If Sh.Name = "Sheet1" And Target.Address = "$E$5" Then
Workbooks.Open ThisWorkbook.Path & "/价格表.xls"
Set sh1 = Workbooks("价格表.xls").Sheets("sheet1")
For x = 2 To 7
If Sh.Range("$E$5") = sh1.Range("a" & x) Then
Sh.Range("$E$7") = sh1.Range("B" & x)
Exit For
End If
Next x
If x = 8 Then
Sh.Range("$E$7") = "查找不到"
End If
End If
End Sub
那么请问,都什么情况下设置EXIT for 跳出循环,什么时候又不用设置跳出啊?谢谢 展开
展开全部
还是要看你自己的判断咯。达到某个要求时,你不需要后面的计算了。就可以结束循环了。如果你需要所有循环都运行完,然后录取过程中的数据,拿肯定就不能跳出循环咯!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-03-03
展开全部
这主要看你 你的 这个循环语句 是放在你的 程序的 什么部分……
如果不会产生 无限循环 而你确实需要让他循环设定的次数 就不需要跳出 ……
否则 它受到其他字句的控制 的话 你就必须设定它 当达到某个 条件时 必须结束……也就是跳出来 结束这一循环……
这不是这个循环语句 本身的问题 而是你整个 过程的需要与否……
就是要看整体 以及它所处的位置……
如果不会产生 无限循环 而你确实需要让他循环设定的次数 就不需要跳出 ……
否则 它受到其他字句的控制 的话 你就必须设定它 当达到某个 条件时 必须结束……也就是跳出来 结束这一循环……
这不是这个循环语句 本身的问题 而是你整个 过程的需要与否……
就是要看整体 以及它所处的位置……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-03-03
展开全部
这个老是循环不是FOR语句的原因,是你的SUB执行条件问题.
第一个是手动启动,第二个的启动方式
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
是工作表变动就启动
第一个是手动启动,第二个的启动方式
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
是工作表变动就启动
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询