2017-07-28 52 views
-1

我希望我的宏“AIMS_Criteria”在单元格A1中的“AIMS”工作表下拉数据验证框发生更改时运行。Excel VBA - 从下拉框更改而不保存代码到工作表中触发宏

我见过的帖子,人们建议右击表,要查看代码并粘贴此:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim KeyCells As Range 
Set KeyCells = Range("A1") 
Call AIMS_Criteria 

End Sub 

但是这不会对我来说,每星期的工作,在工作表中的数据导出到另一个表单中。出于这个原因,我需要我的Personal.xlsb中的所有宏。

无论如何,我可以实现我所需要的而无需更改特定工作表中的代码?

感谢

+0

每周工作表总是在同一工作簿中吗?你的宏'AIMS_Criteria'在哪里?此宏是否触及其他工作簿? – Variatus

+0

这是每周完全不同的工作簿,导出来自一些在线软件。我的AIMS_Criteria宏在我的PERSONAL.XLSB中,所以我可以在所有工作簿上访问。 AIMS_Criteria宏只能触及单个工作簿,但只能触摸工作簿中的多个工作表。 – Dullspark

回答

0

按照你在这里(http://www.cpearson.com/excel/appevent.aspx)找到的指令来捕获应用程序事件。类模块应位于Personal.xlsb中。

每次在任何工作簿中的任何工作表中进行任何更改时,SheetChange事件都会触发。因此,您必须检查A1实际上是否在要运行宏的工作簿中的工作表中更改。

在SheetChange事件中,您可以将工作簿识别为Sh.Parent

+0

我跟着它,但是当我更改单元格A1中的值时,没有任何更改 – Dullspark

+0

如果正确地按照说明进行操作,它将起作用。如果它不起作用,您没有按照说明正确。将此代码放入Class_Initialise事件过程'MsgBox“Class_Initialise”'中。运行您的Personal xlsb的Workbook_Open子项。 MsgBox应该出现。之后,SheetChange过程应该运行。用类似的MsgBox测试它。请记住,当VBA崩溃时,该课程将会丢失,并且必须重新初始化。 – Variatus

相关问题