【问题标题】:Excel macro to modify cells when enter is pressed按下输入时Excel宏修改单元格
【发布时间】:2010-11-09 18:57:36
【问题描述】:

我正在寻找有关宏的帮助,以根据在另一个单元格中输入的内容来减少单元格的值。我有 5 列要输入值,还有 2 列已经有数据。当我在 5 列之一中输入一个数字时,我想要一个窗口显示“Blah Blah”,如果我单击“是”,我希望从另一个需要的单元格中减去该单元格中的值从其他两列中查找信息。

表 1:

    A   B   C   D   E   F   G
1                       5   10

表 2:

    A   B   C   D   E   F   G
1       2   4   6   8   10  12
2   2
3   4
4   5

因此,如果我在工作表 1 上的 A1 中键​​入“250”,宏会将工作表 2 中单元格 F4 中的值减少 250,因为这是来自工作表 1 的 5、10 的值。这样的事情可能吗?将根据我在哪一列中输入值进行更多过滤,我应该能够在以后对其进行修改。

【问题讨论】:

  • 没有人再使用 Excel 宏了。 VBA 已接管。
  • @ignacio 你父亲是阿根廷人?你妈妈是犹太人?艾布拉姆斯?
  • @Ignacio,实际上,今天大多数人谈论宏和 Excel,并不是指 Excel 4.0 宏,而是指 VBA。他只想要一个 VBA 解决方案。我会改变他的标签。

标签: excel vba


【解决方案1】:

首先,确保你不能用公式完成一个足够好的解决方案,因为编写宏会比较麻烦。

如果您仍需要宏,您将需要为相关工作表编写一个围绕Worksheet_Change 事件的函数。 This link 会告诉你如何做到这一点。

注意在处理Worksheet_Change 事件时不要生成另一个Worksheet_Change。由于您对工作表更改的部分响应将是另一项更改,因此请在您的代码前面加上 Application.EnableEvents = False,并在其后面加上 Application.EnableEvents = True

【讨论】:

  • 这就是我要找的,谢谢。我更关心的是查找宏将更新的单元格。为了清楚起见,我提供了示例,但是值将在哪一列/行中将是动态的并且会发生变化。因此,每次更新单元格时都需要进行某种搜索。
  • Worksheet_Change 事件接收一个 Range 对象,告诉您哪个单元格被更改。
  • 对,但是我需要宏来根据其他单元格进行某种搜索,以找到它将改变的单元格。使用上面的示例,我需要脚本在工作表 2 中搜索 5 和 10 以找到单元格 F4。
  • 是的,您需要遍历这些值。
【解决方案2】:

对于代码本身进行更改,您只需使用 CELLS 或 OFFSET 方法(在 Range 对象上)。这将在 Steven 发布的 Worksheet_Change 事件的上下文中完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多