- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于这个问题,我引用下面的帖子来澄清自己:
Why is my conditional format offset when added by VBA?
在我这些天看到的很多很多帖子中,OP 都被默默地允许使用 .Activate、.Select、.Offset 等...而它们却为潜在错误(通常是由最终用户引起的)敞开了大门。 .
有时甚至支持该代码。
我的问题:是否存在一种有效的情况,您可以在没有直接替代方案来捕获这些 stmts 产生的典型错误的情况下使用这些语句中的任何一个?
我指的是动态解决方案,我认为这是开发 Excel 时必须的解决方案。就我个人而言,在六年多的时间里,我不记得有任何一个案例需要它;它似乎总是最糟糕的选择之一。在我以前的公司中,永远不要使用它是一条无声的规则,它只会让我的 VBA 生活(以及最终用户的生活)变得更好。
为什么我提出这个问题是因为我认为让 VBA 新手意识到他们在使用这些语句时所承担的风险是值得的(通过经验证明,当最终用户做了一些意想不到的事情时,他们最终不会这样做)对 VBA 没有任何感情)并提出直接的替代方案(我不会说我自己之前总是这样做,但我直觉地认为,仅仅为已经存在 bug 的怪物提供快速解决方案是有问题的)。
我相信,当默默地允许(在这种情况下它会自动增强)时,刚开始的 VBA 开发人员将以错误的方式创建越来越多的工具(因此新手也会继承这种行为 - 他们也将从 Stack Overflow 中学到这一点)因为 Google 返回了他们寻找的结果 (!))。
如果开发人员不知道为什么他“可以”使用“选择”以及在哪些情况下它是潜在的错误,那么他永远不应该使用它。就我个人而言,我可能会在立即窗口中使用 select stmt 对动态范围定义(错误模式)进行一些快速检查,但不会在书面代码中使用。
结果使得 VBA 最终比现在更加不受欢迎;如果出现问题,该语言将成为受害者(但恕我直言,它仍然是 Excel 和 Access 应用程序可用的“最佳”编程支持)。我在一家大公司里见过这种情况发生太多次了,那里的 VBA 总是“狗屎”。
这只是我自己的真实经历。
这不是对错的问题,而是对错的问题。我有兴趣听听您对这个问题的看法。
最佳答案
我同意 Select 和 Activate,但不同意 ActiveWorkbook、ActiveSheet 和 ActiveCell(我同意它们被滥用,但并不是说它们本身应该避免)。这些肯定有合法用途。我有一个程序可以自动执行“填充系列”,从 ActiveCell 执行此操作。我的程序无法预测将使用哪些单元格;由用户来选择它。这是用户界面的一部分。
但是,在三种情况下我不得不使用 Select(现在我读到了四种有关缩放的内容,但我从未使用过它)。
摆脱选择和激活代码是一场崇高的战斗。
关于vba - .Select、.Activesheet、.Activecell 等...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12426794/
我习惯于总是使用ActiveSheet,如下所示:ActiveWorkbook.ActiveSheet。我最近偶然发现this Microsoft page代码包含 ActiveSheet,但不包含
我录制了一个宏,它在“ActiveSheet”上创建了一个 With 循环。我想指定哪个工作表,这样我就可以创建一个按钮,其中包含该宏,它将引用正确的工作表。在 vba 中如何指定特定工作表而不是“W
在我使用的工作表工具中,我有一个指向 Sharepoint 列表的链接表。我编写的宏会刷新表格并删除任何过滤器(如果有的话)。 我通过快速更改代码解决了此代码的问题,但我不太明白为什么 actives
我在这里得到了一些非常好的帮助,编写了一个简短的宏,如下所示(效果完美)。 我遇到的问题是我不明白如何在每一步中使用 ActiveSheet 删除常量。理想情况下,我希望能够在具有不同名称的工作表上运
有用户定义函数(UDF),位于工作簿的所有工作表上。 如何引用该函数所在的工作表? 我正在使用ThisWorkbook.ActiveSheet,但结果不断变化。 Function äëÿñèò(Dia
Dim wsCopy As Worksheet Dim wsDest As Worksheet Set wsCopy = Workbooks(ThisWorkbook.Path).ActiveSh
我的工作簿中有 10 张工作表 - 这些工作表是从各个工作簿中导入的 - 这些工作簿是从不同的监控工具中提取的 我需要在所有 10 个工作表中应用过滤器,但是,并非所有工作表都采用相同的格式/结构。
我正在使用 Excel for Mac 2011,我在一张纸上有几个复选框。我正在尝试使用以下代码使它们自动化: Private Sub CheckBox12_Click() Dim ws A
我已经找到了解决方案,但代码太长了。然后我决定搜索一种将我想要查找和突出显示的所有单词插入到单个查找方法中的方法。我遇到了一些使用数组来执行此操作的想法,并使用这 3 个代码来编写我的代码( this
对于我的第一个 AddIn Excel,我想选择事件工作表并计算工作表中的列和行。 我在自定义功能区中创建了一个按钮。 private void AddValues_Click(object
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B4")) Is Nothing
我编写了一个带有 if 语句的代码,如果满足某些条件,则可以将复选框添加到 ActiveSheet 中的某些单元格。我下面的代码显示了该代码。 'To add checkboxes Dim ToRow
我有一个读取文本文件并将数据导入到定义名称单元格的子程序。文本文件中有一些我不需要的数据,所以如果子找不到匹配的单元格,它只是假设忽略它。 但是,当函数找到不存在的定义名称时,它会引发 1004 错误
我一直在放QueryTables结果 ActiveSheet ,但现在我想把它们放在另一张纸上。在下面的代码中,注释掉的行是我最初的,下面的“with”行是我的新尝试。 Dim QuerySheet
一些背景:我有一张图表,上面有一张计数表。当切片器更改时,我需要单击计算来更新计数和图表。 (由于工作簿大小,计算设置为手动)。 信不信由你,使用计算按钮超出了某些用户的范围。我希望将它作为一个表单按
当您在 Excel 中打开工作簿时,它会显示您上次保存时正在查看的工作表。 当您使用 EPPlus 打开工作簿时,如何确定这是哪个工作表? 最佳答案 ExcelWorksheet activeShee
对于这个问题,我引用下面的帖子来澄清自己: Why is my conditional format offset when added by VBA? 在我这些天看到的很多很多帖子中,OP 都被默默
我有这个简单的代码,我只想将值从 WoorkBook1 复制到 Workbook2,只有值,因为 Workbook2 具有特定格式。 Sub Test() Workbooks("Workbook
我有 2 个工作表(输入和记录),我只想将一些数据从“输入”复制到“记录”,它有效,但如果我保护“记录”...。 Worksheet类的粘贴方法失败过来。 因此,我为未 protected 工作表和保
我可能在这里遗漏了一些非常明显的东西,但为什么以下内容不向日志写入任何内容? (jsfiddle 在这里 - http://jsfiddle.net/hiwilson1/qk9cjuh2/ - 虽然它
我是一名优秀的程序员,十分优秀!