【问题标题】:VBA Unusual cell addressVBA 不寻常的单元格地址
【发布时间】:2021-08-10 08:40:28
【问题描述】:

我正在尝试在 Excel VBA 中优化单元格地址。我写了一个地址:

ActiveCell.Offset(, -2).Value = ""

我也需要在里面放一张纸:

Worksheets("Machine Format")

我能想到的每个组合都返回一个不正确的错误。

有人可以帮我处理这段代码吗?

【问题讨论】:

  • 另外,我确信您想要实现的任何目标都可以在不使用ActiveCell 的情况下完成。你可能想看看How to avoid using Select in Excel VBA
  • 我需要activecell,因为在我的项目中这是一个动态的东西,可能会根据各种复杂的系统左右移动
  • 没关系。 ActiveCell 将始终引用活动表。您可以使用不需要工作表即可激活的范围对象。如果您能分享更多详细信息,我将非常乐意提供帮助。
  • 范围如 (A2:C6) 例如?
  • 当我说分享更多细节时,我期待一个关于您到底想要实现什么的简短描述?

标签: excel vba range cell


【解决方案1】:

在正常情况下,即您的活动单元格是 C7,通过执行您的代码,它将更新 A7 中的值

但是,不建议使用偏移量-2,因为当你的活动单元格是B7或A7时,它会因为超出边界而返回错误

如何解决,如果还是偏爱offset,就使用if函数,比如

If ActiveCell.Column > 2 Then
    ActiveCell.Offset(0, -2).Value = 100
End

所以它不会执行偏移量 -2 除非它在 ​​col C 或以上

【讨论】:

  • 问题不在于找到单元格,而在于工作表,因为我的代码仅在所需工作表处于活动状态时才有效......但无论如何我都需要它在工作簿中找到它:)在我的情况下,我总是需要在 activecell 代码之前编写 Worksheets("Machine Format").Select,这样它就是活动工作表,我正在尝试将这两件事结合起来
  • In my case I always need to write Worksheets("Machine Format").Select before that activecell code @Eduards 如果您耐心浏览我在问题下方提供的链接,您将不会遇到这个问题:)
  • 解决起来没那么难,写Worksheets("Machine Format").Select,再写Range("C1".select这样的代码,以后就不会有这样的问题了
【解决方案2】:
Sheets("Machine Format").Range(ActiveCell.Offset(, -2).Address).Value = ""

【讨论】:

    猜你喜欢
    • 2017-06-13
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多