+ -
当前位置:首页 → 问答吧 → For next 和 Onerror

For next 和 Onerror

时间:2011-08-05

来源:互联网

各位朋友,

我想根据表中A列是否有ACT_LOC和ADJ_LOC进行不同的操作。
如果两者都有,就做语句1;
如果只有其中一种,就去下一个sheet。
但是For循环第一次好用,第二次就进行不下去了,不知道是为什么,提示是“Object variable or With block variable not set"
不知道怎么办,请指教。多谢

其中,ACT = Range("A:A").Find("ACT_LOC").Row是为了判断第一个ACT_LOC的行数。




Sub ErrorCase()
For i = 1 To 3
On Error GoTo ErrorHandler
Dim ACT%
Dim ADJ%
ACT = Range("A:A").Find("ACT_LOC").Row
ADJ = Range("A:A").Find("ADJ_LOC").Row
'语句1
Exit Sub
   
ErrorHandler:
'go to next sheet
Next
End Sub

附件

Help.zip(10.39 KB)

2011-8-5 00:16, 下载次数: 11

For循环和Onerror

作者: luckfreeman   发布时间: 2011-08-05

复制内容到剪贴板
代码:
Sub ErrorCase()
Dim sht As Worksheet
Dim ACT, ADJ
On Error GoTo ErrorHandler
For Each sht In Sheets
    Set ACT = sht.Range("A:A").Find("ACT_LOC"): If Not ACT Is Nothing Then a = ACT.Row
    Set ADJ = sht.Range("A:A").Find("ADJ_LOC"): If Not ADJ Is Nothing Then b = ADJ.Row
'语句1
Next
Exit Sub
   
ErrorHandler:
MsgBox "aa"
'go to next sheet
End Sub

作者: 蓝桥玄霜   发布时间: 2011-08-05

谢谢蓝桥玄霜的改动,学习了。
其中有 个问题不太明白,还想问下,麻烦了。 多谢

1.  假设一共有4个sheets,  只要在后3个sheets中做for循环, 第一个sheet不用,有这样的语句,能在 For Each sht In Sheets 后面加语句排除第一个sheet吗?

2.  Set ACT = sht.Range("A:A").Find("ACT_LOC"): If Not ACT Is Nothing Then a = ACT.Row
这行set变量之后加 “:”从未用过,能在讲解下吗?

作者: luckfreeman   发布时间: 2011-08-05

在您的基础上,因为刚才用onerror没成功,这次我没用的if.
我想要的结果是如果只有ACT或者ADJ, 就不用做任何动作;如果两者都有,就把他们分开,加一行标题,下移2行。
下面的macro可以实现,麻烦帮我看看能不能简化下,或者用on error做成,多谢多谢。


Sub Anotherway()
   
Dim Mbook As Workbook
Set Mbook = ActiveWorkbook
Dim isheet%, ACT, ADJ, a%, b%

For isheet = 2 To Mbook.Worksheets.Count

Mbook.Worksheets(isheet).Select


Set ACT = Sheets(isheet).Range("A:A").Find("ACT_LOC"): If Not ACT Is Nothing Then a = ACT.Row
Set ADJ = Sheets(isheet).Range("A:A").Find("ADJ_LOC"): If Not ADJ Is Nothing Then b = ADJ.Row

If a * b <> 0 Then

Rows("1:1").Select
Selection.Copy
Rows(b).Select
Selection.Insert Shift:=xlDown

Range(Rows(b), Rows(b + 1)).Select
Selection.Insert Shift:=xlDown
   
Range("a1").Select

End If

a = 0 'set a and b to Zero
b = 0

Next
   
End Sub

作者: luckfreeman   发布时间: 2011-08-05

相关阅读 更多