使用combobox更改另一电子表格中单元格的值,运行VBA代码

看到这个问题从来没有在类似的post完全回答,所以我会再试一次。 从一张空白工作簿开始,我希望在“Sheet1”上有一个下拉列表,但在“Sheet2!$ A $ 1:$ A $ 4”和“Sheet2!$ H $ 5”上的单元格链接上,

当用户从Sheet1的下拉列表中select一个选项时,Sheet2中的值应该更改,并应该启动macros。 但是,如果Sheet2是活动工作表,我只能使用一个macros来工作。 是否有代码可以执行,如果它检测到不同的工作表中的变化? 问题2,我把代码放在“ThisWorkbook”或“Sheet1”吗?

关键点:由非活动工作表中的单元格更改引起的macros。

谢谢! 艺术

在我的Excel 2013链接的单元格更新不触发任何工作表或工作簿事件,甚至没有“Worksheet_Change”一个

所以我会通过Worksheet_Calculate“事件和其他一些”技巧“来解决这个问题

事件处理程序是:

Private Sub Worksheet_Calculate() If Me.Range("controlCell") <> Me.Range("linkedCell") Then Application.EnableEvents = False ' to prevent following instruction from firing this event Me.Range("controlCell") = Me.Range("linkedCell") ' save the current value to be used for future checkings Call mySub ' <--- place here your actual sub name along with proper arguments Application.EnableEvents = True ' to prevent following instruction from firing this event End If End Sub 

被放置在“Sheet2”中,并且这又需要以下额外的“技巧”:

  • 在“linkedCell”之后命名链接的单元格(“Sheet2!$ H $ 5”)(或者任何你想要的,但是在后面的步骤和上面的事件代码中都是一致的)。
  • 在Sheet2中select一个单元格,在其中放置链接单元格的简单“回声”(即formula =linkedCell
  • 在Sheet2中select一个单元格,并在“controlCell”之后命名(或者任何你想要的但与之一致的…)

这样它应该像下面的工作

  • 您在“Sheet1”的DropDown列表中select一个值
  • 这将更新“linkedCell”,从而更新“回声”单元格
  • 后者将最终触发Sheet2的Worksheet_Calculate事件,该事件检查“linkedCell”与“controlCell”,如果不同,则运行你的子程序并更新“controlCell”以供下列使用