Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2534|回复: 5

[已解决]On Error GoTo 和On Error Resume Next混用问题

[复制链接]
发表于 2011-12-2 10:44 | 显示全部楼层 |阅读模式
。。。
If Dir(App.Path & "\" & Myvalue & "B1.xls ") = "" Then
Set xlBook = xlApp.Workbooks.Open(App.Path & "\B1.xls ")
  Else
Set xlBook = xlApp.Workbooks.Open(App.Path & "\" & Myvalue & "B1.xls ")
  End If
On Error GoTo A: '打开的工作簿里可能会有"费用表"这个工作表,如果没有就生成,如有就继续操作其他工作表
With xlSheet
.Name = "费用表"
。。。
。。。
End With
A:
Err.Clear      '从这里开始往下带下划线的三行是后来增加的,如果没有这三行,
Resume B   ' 当程序运行至“.Name = Base”时程序将抛出了一个异常并被挂起。
B:
Set xlSheet = xlBook.Worksheets.Add
With xlSheet
Base = "D" + Trim(Str(Di))
Suffix = 0
On Error Resume Next '错误陷阱技术,当发现工作簿中已有“D&Di”或“D&Di-1“这个工作表时,新表名后面加“-1”或“-2”。
.Name = Base
Do Until Err.Number = 0
Err.Clear
Suffix = Suffix + 1
.Name = Base + "-" + Trim(Str(Suffix))
Loop
请教:
1:带下划线的三行感觉用着很别扭,有没有其他方法判断所打开工作簿中是否有某指定表名的工作表;
2:On Error Resume Next 错误陷阱技术是否用的恰当。
最佳答案
2011-12-2 10:57
本帖最后由 那么的帅 于 2011-12-2 10:58 编辑

1 判断所打开工作簿中是否有某指定表名的工作表;
答:遍历打开工作簿的工作表

  1. y = False
  2. For Each SHT In Sheets
  3.     If SHT.Name = 指定表名 Then
  4.         y = True
  5.         Exit For
  6.     End If
  7. Next
  8. If y = True Then
  9.     '找到表名的进一步操作
  10. Else
  11.     '没有找到表名的进一步操作
  12. End If
复制代码

2 遇到错误,尽量使用代码来规避错误的产生,实在不行,再用On eError 来容错。
发表于 2011-12-2 10:50 | 显示全部楼层
回复

使用道具 举报

发表于 2011-12-2 10:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 那么的帅 于 2011-12-2 10:58 编辑

1 判断所打开工作簿中是否有某指定表名的工作表;
答:遍历打开工作簿的工作表

  1. y = False
  2. For Each SHT In Sheets
  3.     If SHT.Name = 指定表名 Then
  4.         y = True
  5.         Exit For
  6.     End If
  7. Next
  8. If y = True Then
  9.     '找到表名的进一步操作
  10. Else
  11.     '没有找到表名的进一步操作
  12. End If
复制代码

2 遇到错误,尽量使用代码来规避错误的产生,实在不行,再用On eError 来容错。
回复

使用道具 举报

 楼主| 发表于 2011-12-2 11:09 | 显示全部楼层
那么的帅 发表于 2011-12-2 10:57
1 判断所打开工作簿中是否有某指定表名的工作表;
答:遍历打开工作簿的工作表

{:06:}不愧是专家!
回复

使用道具 举报

 楼主| 发表于 2011-12-2 11:11 | 显示全部楼层
gulianzui 发表于 2011-12-2 10:50
楼主你也是VB高手,羡

学长,我才幼儿园小班,你都高中了,你等等我哦!
回复

使用道具 举报

发表于 2011-12-3 10:00 | 显示全部楼层
happym8888 发表于 2011-12-2 11:11
学长,我才幼儿园小班,你都高中了,你等等我哦!

我这高中,纯属灌水来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 10:40 , Processed in 0.636688 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表