- 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/
我正在编写一个 VBA 代码,该代码将在 Excel 中打开我的工作簿中的特定工作表,然后在 A 列中查找值为“TOTAL”的单元格。然后必须将其设置为 ActiveCell,以便我的宏的其余部分可以
您好,我创建了以下代码来格式化 Excel 电子表格中的总计行。我的问题是我想从总计中选择动态单元格,因为我并不总是有 15 列。我尝试使用 ActiveCell,但它没有用。谁能帮我更改此代码以满足
我有一个 MonthView 和 DTPicker 的用户窗体,当单击某些单元格时会填充它们。我将表单定位在第一个单元格的正下方,但希望它填充在我告诉它激活的每个事件单元格的正下方。我当前用于定位用户
如何使用 VBA 将名为“Total”的文本插入选定的单元格 我用过 Activecell.Name="Total" Selection.Name="Total" 但是这两个都不行,有没有其他办法呢?
我是vba新手,正在学习。我正在努力理解为什么这在 Excel 2016 中失败,并且我的研究一片空白。我有以下代码 Option Explicit Sub Range_End_Method() Di
我试图通过 Excel 2013 中的 VBA 确定 ActiveCell 是否不仅在任何表中,而是在特定表中。 下面是原样的代码,但仅检测任何表中的 ActiveCell。注释掉的行是我正在寻找的内
我正在阅读某人编写的上一个模块中的一些 VBA,并发现了一些让我困惑的内容: Sheets("Setup").Select Range("Start").Select ActiveCell.Offse
我编写了一个带有 if 语句的代码,如果满足某些条件,则可以将复选框添加到 ActiveSheet 中的某些单元格。我下面的代码显示了该代码。 'To add checkboxes Dim ToRow
我想要以下 VBA 代码: 如果事件单元格内部颜色更改为 colorindex 44,那么我希望单元格右侧的五列具有文本“完成”和今天的日期。 我已经尝试了以下方法,但仅当我将所选单元格向右移动时才有
我正在尝试将 ActiveCell 分配给一个变量以便稍后使用它。它给了我一个超时错误。 代码如下,但通常我还没有弄清楚如何动态为变量分配范围。 Sub findCells() Dim topCell
在 Excel 中使用 VBA: 我有很多工作表,其中有多个表。这些表唯一的共同点是 ProductID 列和 LotNumber 列。产品 ID 列中的数据需要进行验证和/或操作。我需要一种方法来获
对于这个问题,我引用下面的帖子来澄清自己: Why is my conditional format offset when added by VBA? 在我这些天看到的很多很多帖子中,OP 都被默默
作为学习练习和 future 代码中的可能用途,我创建了我的第一个 Excel VBA 函数来返回任何 Excel 表格(而不是工作表本身)中的 activecell 行号。本质上,它只是在工作表中找
嘿,我有代码将行移到另一个带有单元格名称的工作表,一个循环,直到它在数据末尾遇到一个空白,这里的代码摘录; Range("AF2").Select Do While ActiveCell.Value
摘要:我遍历多行数据,每次通过循环将来自不同列的数据存储在大约 6 个不同的变量中 问题:我会使用 Range("A" & some iterator) 节省大量的 CPU 周期吗?而不是 Activ
我有这段代码,我想在另一张工作表中查找一些单元格,如果它们符合条件,则将相邻单元格添加到返回到调用单元格函数的总数中。 Function collectUtfall(A1 As String, Ax
所以,我正在让自己成为 excel 中的游戏突袭追踪器。 该表通过不断激活的 VB 代码进行动态排序,除非我暂时停止代码。现在我需要一段代码,这样当我选择一个单元格并在键盘的小键盘上按 + 或 - 时
我需要从 Excel 中的列表构建登录文本。我自己尝试使用宏并编写一个小脚本。基本上我有 2 个单元格,一个挨着一个。第一个获取 ssh key 名称,第二个获取密码。这 2 值取决于机器的操作系统,
如何将 Excel 中事件单元格的地址存储到 Outlook 中的变量中? Outlook 正在操作工作簿,我想在操作后将事件单元格恢复到其原始位置。 Set xl = GetObject(, "Ex
我在理解某些 VBA 代码时遇到一些困难。我没问题 activecell.offset(1,1).select 但是,我有问题 activecell.offset(1,1).range("A1").s
我是一名优秀的程序员,十分优秀!