中易网

excel vba 返回sub问题,求大神指教

答案:2  悬赏:40  
解决时间 2021-01-12 10:26
  • 提问者网友:嘚啵嘚啵
  • 2021-01-12 04:59
excel vba 返回sub问题,求大神指教
最佳答案
  • 二级知识专家网友:旧脸谱
  • 2021-01-12 05:28
下面的可以,
Sub xxx()
'
'宏
RET:

Dim flg1 As Boolean
Dim flg2 As Boolean

flg1 = False
flg2 = False

If R54 = 6 Or S54 = 6 Or T54 = 6 Or U54 = 6 Or V54 = 6 Or W54 = 6 Or X54 = 6 Or Y54 = 6 Or Z54 = 6 Or AA54 = 6 Then
flg1 = True
End If
If R54 < 6 And S54 < 6 And T54 < 6 And U54 < 6 And V54 < 6 And W54 < 6 And X54 < 6 And Y54 < 6 And Z54 < 6 And AA54 < 6 Then
flg2 = True
End If
If flg1 And flg2 Then
Exit Sub
Else
GoTo RET
End If
End Sub
追问:谢谢你的回答。但这段该插在哪个地方好呢??
追答:Sub 4()
'
'宏
RET:

Dim flg1 As Boolean
Dim flg2 As Boolean

flg1 = False
flg2 = False
Range("BA2").Select

ActiveWorkbook.Worksheets("十个").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("十个").Sort.SortFields.Add Key:=Range("BA2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("十个").Sort
......
End With
Columns("BC:BC").Select
Selection.Copy
Columns("AP:AP").Select
ActiveSheet.Paste
Range("Q3").Select
If R54 = 6 Or S54 = 6 Or T54 = 6 Or U54 = 6 Or V54 = 6 Or W54 = 6 Or X54 = 6 Or Y54 = 6 Or Z54 = 6 Or AA54 = 6 Then
flg1 = True
End If
If R54 < 6 And S54 < 6 And T54 < 6 And U54 < 6 And V54 < 6 And W54 < 6 And X54 < 6 And Y54 < 6 And Z54 < 6 And AA54 < 6 Then
flg2 = True
End If
If flg1 And flg2 Then
Exit Sub
Else
GoTo RET
End If
End Sub
追问:兄弟。。很感谢你的回答。。但是运行了一下。。出现其中r54或者s54等于6的时候怎么不停止运行??我的意思是直到其中一个数值等于6的话就停止运行
还有个问题就是可以添加停顿个几秒钟再运行。。。现在的话运行太快,。
追答:下面的出现{r54或者s54等于6的时候怎么不停止运行
}停止运行。没有加上停顿运行的,你把,excel发给我把([email protected]),我给你加上
Sub 4()
'
'宏
RET:

Dim flg1 As Boolean
Dim flg2 As Boolean

flg1 = False
flg2 = False
Range("BA2").Select

ActiveWorkbook.Worksheets("十个").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("十个").Sort.SortFields.Add Key:=Range("BA2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("十个").Sort
......
End With
Columns("BC:BC").Select
Selection.Copy
Columns("AP:AP").Select
ActiveSheet.Paste
Range("Q3").Select
If R54 = 6 Or S54 = 6 Or T54 = 6 Or U54 = 6 Or V54 = 6 Or W54 = 6 Or X54 = 6 Or Y54 = 6 Or Z54 = 6 Or AA54 = 6 Then
flg1 = True
End If
If R54 < 6 And S54 < 6 And T54 < 6 And U54 < 6 And V54 < 6 And W54 < 6 And X54 < 6 And Y54 < 6 And Z54 < 6 And AA54 < 6 Then
flg2 = True
End If
If flg1 Or flg2 Then
Exit Sub
Else
GoTo RET
End If
End Sub
追问:对阿,,我的意思是If R54 = 6 Or S54 = 6 Or T54 = 6 Or U54 = 6 。。。 出现其中一个情况就马上停止循环。。。如果出现If R54 < 6 And S54 < 6 And 。。。。的话那就继续循环,一直循环到出现If R54 = 6 Or S54 = 6 Or T54 = 6 Or U54 = 6 。。就停止。兄弟再麻烦一次 怎么改
追答:停顿的化,须要把下面代码加到模块里,在运行。关于【不停止运行?】你把excel发到我邮箱[email protected]把,我看下。
Sub sss()
'
'宏
‘停顿1s
Application.OnTime Now + TimeValue("00:00:01"), "aa"
End Sub
Public Function aa()
'
'宏
Dim flg1 As Boolean
Dim flg2 As Boolean

flg1 = False
flg2 = False

ActiveWorkbook.Worksheets("十个").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("十个").Sort.SortFields.Add Key:=Range("BA2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("十个").Sort
.........
End With
ActiveSheet.Paste
If R54 = 6 Or S54 = 6 Or T54 = 6 Or U54 = 6 Or V54 = 6 Or W54 = 6 Or X54 = 6 Or Y54 = 6 Or Z54 = 6 Or AA54 = 6 Then
flg1 = True
End If
If R54 < 6 And S54 < 6 And T54 < 6 And U54 < 6 And V54 < 6 And W54 < 6 And X54 < 6 And Y54 < 6 And Z54 < 6 And AA54 < 6 Then
flg2 = True
End If
If flg1 Or flg2 Then
Exit Function
Else
Call sss
End If
End Function
全部回答
  • 1楼网友:琴狂剑也妄
  • 2021-01-12 05:43
直接下面代码,重新运行宏4不就行了
Call 4
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息