利用VBA编程实现在关闭excel前清空报价单有字的行,从第4行开始。函数见问题补充。

函数如下:PrivateSubWorkbook_BeforeClose(CancelAsBoolean)'关闭前清空价格单Call清空报价单EndSubSub清空报价单(... 函数如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean) '关闭前清空价格单
Call 清空报价单
End Sub
Sub 清空报价单()
Dim row3 As Integer
Dim i As Integer
Application.ScreenUpdating = False '关闭屏幕刷新 提高VBA运行速率
row3 = Sheets("检测费用报价").Range("a65536").End(xlUp).Row
For i = 4 To row3
Sheets("检测费用报价").Rows(i).Select
Selection.ClearContents
Selection.ClearFormats
Next i
Application.ScreenUpdating = True '恢复刷新功能
Sheets("检测费用报价").Cells(4, 1).Select
End Sub

问题:如果关闭前,正式报价表sheet页,没有问题,自动清空。
如果是其他sheet页,就会报错。错误截图见附件。请各位大侠尽快帮忙解决,多谢。
展开
 我来答
feiyun
2012-07-30 · 知道合伙人教育行家
feiyun
知道合伙人教育行家
采纳数:2687 获赞数:7903
从事培训工作12年 中级经济师

向TA提问 私信TA
展开全部
Sheets("检测费用报价").Cells(4, 1).Select

这句去掉就行了,反正要关闭工作簿了,还要选干啥呢。
如果非要选择,那么先激活这个工作表
追问
试过了,去掉后Sheets("检测费用报价").Rows(i).Select  这句也还有问题。
追答
哦 这三句也有问题
-----
Sheets("检测费用报价").Rows(i).Select
Selection.ClearContents
Selection.ClearFormats
------
在前边加一个
Sheets("检测费用报价").Rows(i).Activate
或者直接改成以下两句,不要select
---
Sheets("检测费用报价").Rows(i).ClearContents

Sheets("检测费用报价").Rows(i).ClearFormats

---
百事牛
2024-10-22 广告
百事牛是共享提供商,我们提供可靠有效的服务,适当合理的授权费有利于的继续更新优化。同样的事情,同样的方法,百事牛团队十年磨一剑,始终至聚焦在密码恢复领域,深耕于此,我们已研制出有别于其他公司的算法和运算模式, 百事牛的暴力模式加入了分布式点... 点击进入详情页
本回答由百事牛提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式