Tra*_*ace 5 excel vba excel-vba
对于这个问题,我参考下面的帖子来澄清自己:
为什么我的条件格式偏移时由VBA添加?
在我看到的很多很多帖子中,OP被默默地允许使用.Activate,.Select,.Offset等......虽然它们是潜在错误的开门(最常见的是由最终用户引起).
有时甚至支持代码.  
我的问题:是否存在一种有效的情况,您可以使用这些语句中的任何一种,而没有直接替代方案可以捕获这些stmts导致的典型错误?
我指的是动态解决方案,在我看来是开发Excel时必须的.就个人而言,在6年多的时间里,我不记得我需要的一个案例; 它似乎永远是最糟糕的选择之一.在我以前的公司中,这是一个永远不会使用它的静默规则,它只会使我的VBA生活(以及最终用户的生活)变得更好.
为什么我创建这个问题是因为我认为让新人进入VBA意识到他们在使用这些陈述时所冒的风险是值得的(当最终用户做出意想不到的事情时经验证明风险 - 最后他们没有任何意外对VBA的感情)并提出直接的替代方案(我不会说我总是在我之前做过这样的事情,但我觉得在我已经错误的怪物提供快速解决方案方面存在问题).
我相信,当默默地允许(在这种情况下它会自动增强)时,启动VBA开发人员将以错误的方式创建越来越多的工具(因此新手也会继承这种行为 - 自Google返回以来,他们也将从Stack Overflow中学习他们寻找的结果(!)).
如果开发人员不知道为什么他"可以"使用"选择",并且在哪种情况下这是一个潜在的错误,他应该永远不会使用它.就个人而言,我可能会使用即时窗口中的select stmt对动态范围定义(错误模式)进行快速检查,但不能在编写代码中进行快速检查.
结果使得VBA最终比现在更不受欢迎; 如果麻烦出现,语言将成为受害者(但它仍然是Excel和Access应用程序可用的"最佳"编程支持).我已经在一家大公司看到这种情况发生了太多次,而VBA总是"糟糕".
这只是我自己的诚实经历.
这不是对或错的问题; 我有兴趣听取你对这个问题的看法.
小智 2
Excel 中有一些方法需要激活或 ActiveSheet/ActiveWorkbook 等,因为我有时会遇到问题。目前我唯一记得的是缩放属性。缩放仅影响窗口中当前活动的工作表,因此要缩放所有工作表,您需要类似的东西
Sub SetZoom()
Dim ws As Worksheet
    Application.screenupdating = false
    For Each ws In Worksheets
        ws.Select
        ActiveWindow.Zoom = 80
    Next ws
    Application.screenupdating = true
End Sub
| 归档时间: | 
 | 
| 查看次数: | 7439 次 | 
| 最近记录: |