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 展开
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 展开
4个回答
展开全部
在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
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
展开全部
在你的每个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
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
这样就达到你的目的了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看了一下你的程序,循环结束后程序就结束了,所以只要取完数后退出程序就行,就不用退出循环了,在每条
Sheets("数据").Cells(i, 2).Value = Sheets("原格式").Cells(j, 5).Value
后加
exit sub
这是最简便了的
Sheets("数据").Cells(i, 2).Value = Sheets("原格式").Cells(j, 5).Value
后加
exit sub
这是最简便了的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
End Select
Exit for
Next j
Exit for
Next j
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询