看起来有点帮助-VBA相对较新,并且努力寻找一些VBA代码来完成我想做的事情。
基本上-我在“摘要”工作表中有单元格B3,这是一个输入单元格。将数据输入该单元格后,我希望VBA代码检查工作表AAT的B列,如果有匹配项(即工作表AAT的B列中的任何值都与工作表摘要中的单元格B3匹配),那么我希望运行Macro AAT 。 如果在此工作表中找不到数据,则宏将搜索工作表AOT的B列;如果找到匹配的数据,则将运行宏AOT。 如果在工作表AOT或AAT的B列中找不到B3中的值,则会出现一个弹出框,提示未找到数据。
我认为这对您的专家来说非常容易,但是对我来说-作为一个新手,过去一个小时左右我一直在阅读几页,可惜没有运气 感谢您的帮助!欢呼,马特
答案 0 :(得分:0)
首先,不要将宏命名为AAT或AOT,因为它们是有效的列名以及工作簿中工作表的名称。在某些时候会吸引您,并使您的代码混乱-我选择将它们称为“ MacroAOT”和“ MacroAAT”
Sub ChooseMacro()
Dim r As Range
r = Worksheets("AAT").Columns("B").Cells.Find(Worksheets("summary").Range("b3"))
If r Is Nothing Then
r = Worksheets("AOT").Columns("B").Cells.Find(Worksheets("summary").Range("b3"))
If r Is Nothing Then
MsgBox "Not Found"
Else
MacroAOT
End If
Else
MacroAAT
End If
End Sub
答案 1 :(得分:0)
假设我们在标准模块中有三个宏:
Sub FAIL()
MsgBox "error"
End Sub
Sub AAT()
MsgBox "AAT"
End Sub
Sub AOT()
MsgBox "AOT"
End Sub
在单元格 C3 中输入:
=IF(ISNUMBER(MATCH(B3,AAT!B:B,0)),"AAT",IF(ISNUMBER(MATCH(B3,AOT!B:B,0)),"AOT","FAIL"))
此公式告诉系统要运行哪个宏。在单元格 B3 中输入值后,运行以下命令:
Sub TestB3()
Application.Run Range("C3").Value
End Sub