【发布时间】:2016-10-10 15:09:39
【问题描述】:
我对 vba 很陌生,有一个相当简单的问题。有人可以帮忙吗:
我希望我的 vba 宏转到感兴趣列的底部,跳过,而不是选择特定的单元格,然后它下面的两个单元格执行以下操作:
Range("W72").Select
Selection.NumberFormat = "General"
ActiveCell.FormulaR1C1 = "Null_value"
Range("X72").Select
Selection.NumberFormat = "General"
ActiveCell.FormulaR1C1 = "=R[-2]C[1]-SUM(R[-2]C[-8]:R[-2]C[-6])"
如您所见,上面的代码指的是特定的单元格 W72 和 X72。目前,这些列中的最后一个条目位于 W70 和 X70 中,但下个月我的数据集将变得更大,因此 W72 和 X72 不是执行上述操作的正确位置。我该如何纠正这个问题,以便我的 vba 代码自动进入 W(n):X(n) 的底部,跳过一行并在 W(n+2) 中,X(n+2) 执行上面的代码.
此外,我上面的公式 (ActiveCell.FormulaR1C1) 也引用了特定的单元格,在我的例子中,第 70 行左侧几列,但正如您可能所说,这也有同样的问题,因为行引用每个月都会发生变化.我需要让我的 vba 让公式获取这些列的最后一行,这些列是 P、Q、R。
感谢您提供的任何帮助。
更新:我的同一个工作项目的一部分,如果有人也能提供帮助,我将不胜感激。谢谢:
大家好,
我目前有一个每个月都会更改的变量的输入框:
r_mo = Application.InputBox(prompt:="输入报告月份为 YYYYMM (Eg:201604)。此条目中的错误将导致结果错误。")
这会提示一个必须手动输入的输入框...但是,我想自动化此过程并消除对输入框的需要。 vba 中没有 now 函数会自动生成今天的日期。
从现在或系统函数开始,我想要做的就是提取四位数的年份和两位数的月份。
例如,如果我们在 2016 年 12 月
子 asasdas ()
“现在功能” r_mo = YYYYMM ' 自动从“现在函数”更新
结束子
感谢您能给我的任何帮助,非常感谢大家。
【问题讨论】:
-
戴夫在下面给了你一个很好的答案。但是,还有一个提示,它将使您在 VBA 中处于有利地位:几乎从不需要使用代码选择单元格。而不是执行“Range(...).Select”,然后执行“Selection.NumberFormat=...” - 您可以简单地说“Range(...).NumberFormat=...”。您将通过查看宏记录器的输出来学习如何使用“选择”。每个人都是这样学习的:) 但是他们学习的下一件事是,当您自己编写代码时,您可以直接在单元格上执行相关操作而无需选择。祝你好运!
标签: vba excel reference range selection