excel vba 如何跳出循环

如下代码,运行之后先循环i,如果为true则进入循环j,在得到想要的数据后,如何跳出循环j,返回循环i。exitfor应该加在哪里?Subtest()DimnumAsSt... 如下代码,运行之后先循环i , 如果为true 则进入循环j,在得到想要的数据后,如何跳出循环j, 返回循环i。exit for 应该加在哪里?
Sub test()
Dim num As String, i As Integer, j As Integer, subt As String
For i = 2 To Sheets("原格式").Range("a56565").End(3).Row
num = Sheets("原格式").Cells(i, 1).Value
If num <> "" Then '
Sheets("数据").Cells(i, 1).Value = num
For j = 2 To Sheets("原格式").Range("c56565").End(3).Row
subt = Sheets("原格式").Cells(j, 3).Value
Select Case subt
Case "月租费"
Sheets("数据").Cells(i, 2).Value = Sheets("原格式").Cells(j, 5).Value
Case "来话显示功能费"
Sheets("数据").Cells(i, 3).Value = Sheets("原格式").Cells(j, 5).Value
Case "悦铃使用费"
Sheets("数据").Cells(i, 4).Value = Sheets("原格式").Cells(j, 5).Value
Case "区间通话费"
Sheets("数据").Cells(i, 5).Value = Sheets("原格式").Cells(j, 5).Value
Case "长话费"
Sheets("数据").Cells(i, 6).Value = Sheets("原格式").Cells(j, 5).Value
Case "区内通话费"
Sheets("数据").Cells(i, 7).Value = Sheets("原格式").Cells(j, 5).Value
Case "国际自动长途费用"
Sheets("数据").Cells(i, 8).Value = Sheets("原格式").Cells(j, 5).Value
Case ""
Sheets("数据").Cells(i, 9).Value = Sheets("原格式").Cells(j, 5).Value
End Select
Next j
End If
Next i
End Sub
展开
 我来答
三三万尺
2012-05-31 · TA获得超过166个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:221万
展开全部
在next i 前面插入一个标注,如:xiayige:,然后在得到数据后插入跳出循环语句,比如:goto xiayige
Sub test()
Dim num As String, i As Integer, j As Integer, subt As String
For i = 2 To Sheets("原格式").Range("a56565").End(3).Row
num = Sheets("原格式").Cells(i, 1).Value
If num <> "" Then '
Sheets("数据").Cells(i, 1).Value = num
For j = 2 To Sheets("原格式").Range("c56565").End(3).Row
subt = Sheets("原格式").Cells(j, 3).Value
Select Case subt
Case "月租费"
Sheets("数据").Cells(i, 2).Value = Sheets("原格式").Cells(j, 5).Value
goto xiayige

Case "来话显示功能费"
Sheets("数据").Cells(i, 3).Value = Sheets("原格式").Cells(j, 5).Value
goto xiayige

Case "悦铃使用费"
Sheets("数据").Cells(i, 4).Value = Sheets("原格式").Cells(j, 5).Value
goto xiayige

Case "区间通话费"
Sheets("数据").Cells(i, 5).Value = Sheets("原格式").Cells(j, 5).Value
goto xiayige

Case "长话费"
Sheets("数据").Cells(i, 6).Value = Sheets("原格式").Cells(j, 5).Value

goto xiayige

Case "区内通话费"
Sheets("数据").Cells(i, 7).Value = Sheets("原格式").Cells(j, 5).Value
goto xiayige

Case "国际自动长途费用"
Sheets("数据").Cells(i, 8).Value = Sheets("原格式").Cells(j, 5).Value
goto xiayige

Case ""
Sheets("数据").Cells(i, 9).Value = Sheets("原格式").Cells(j, 5).Value
goto xiayige

End Select
Next j
End If
xiayige:
Next i
End Sub
追问
您好,我想定义一个静态变量,用来存储循环 j 已经循环到第几行,使goto xiayige 回到循环i 后再次进入 循环j 时可以继续从上一次跳出来的地方开始循环(比如我是在获得第十行数据后跳出的,我想继续从i开始循环的时候,j循环是从11行开始。)
追答
哦,这个可以这样解决,再声明一个变量k
Sub test()
Dim num As String, i As Integer, j As Integer, subt As String
Dim k As Integer
For i = 2 To Sheets("原格式").Range("a56565").End(3).Row
num = Sheets("原格式").Cells(i, 1).Value
If num "" Then '
Sheets("数据").Cells(i, 1).Value = num
For j = IIf(j =k, k, 2) To Sheets("原格式").Range("c56565").End(3).Row
k=j
subt = Sheets("原格式").Cells(j, 3).Value
Select Case subt
Case "月租费"
Sheets("数据").Cells(i, 2).Value = Sheets("原格式").Cells(j, 5).Value
goto xiayige
End Select
Next j
End If
xiayige:
Next i
End Sub
changhenxue999
2012-05-31 · TA获得超过250个赞
知道小有建树答主
回答量:519
采纳率:0%
帮助的人:237万
展开全部
在你的每个case运行代码后面加一行代码:exit for就可以了,比如
Case "来话显示功能费"
Sheets("数据").Cells(i, 3).Value = Sheets("原格式").Cells(j, 5).Value
exit for
另外一个建议: For i = 2 To Sheets("原格式").Range("a56565").End(3).Row
可以改成 For i=2 to Sheets("原格式").UsedRange.Rows.Count
这样可以根据你实际使用的行数来判断,以减少循环数
如有需要:changhenxue@qq.com
追问
您好,我想定义一个静态变量,用来存储循环 j 已经循环到第几行,使goto xiayige 回到循环i 后再次进入 循环j 时可以继续从上一次跳出来的地方开始循环(比如我是在获得第十行数据后跳出的,我想继续从i开始循环的时候,j循环是从11行开始。)
追答
晕倒,我刚看上你上面的追问改了答案,刚点提交,既然没修改成就跳出了你的追问!
在代码前部定义一变量:dim K as integer
for i =2 to ……前加一行:k=2
把for J=2 to ……改成 for j=k to ……
在我刚才说的exit for 前加一行,K=J
这样就达到你的目的了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ad5a244
2012-05-31 · TA获得超过548个赞
知道小有建树答主
回答量:542
采纳率:0%
帮助的人:155万
展开全部
看了一下你的程序,循环结束后程序就结束了,所以只要取完数后退出程序就行,就不用退出循环了,在每条
Sheets("数据").Cells(i, 2).Value = Sheets("原格式").Cells(j, 5).Value
后加
exit sub
这是最简便了的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
alphabaty
2012-05-31 · TA获得超过1111个赞
知道小有建树答主
回答量:811
采纳率:0%
帮助的人:867万
展开全部
End Select
Exit for
Next j
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式