Vba 使用变量作为宏的名称
这可能是一个相当简单的“不,你不能”的答案。但是,如果你们中有人知道如何使这项工作,我将非常感激 我有一个宏叫“DES”,另一个宏叫“FA”。当我将单元格更改为“DES”或“FA”时,我希望它运行“DES”或“FA”宏。我不知道如何使用一系列if/else逻辑来确定要运行的宏。我希望它能让Go_to_macro()函数输入变量并运行函数。这样做的原因是,我最终会有几十个宏,我希望以这种方式运行 下面的示例代码:“调用命令”是出现问题的地方Vba 使用变量作为宏的名称,vba,excel,Vba,Excel,这可能是一个相当简单的“不,你不能”的答案。但是,如果你们中有人知道如何使这项工作,我将非常感激 我有一个宏叫“DES”,另一个宏叫“FA”。当我将单元格更改为“DES”或“FA”时,我希望它运行“DES”或“FA”宏。我不知道如何使用一系列if/else逻辑来确定要运行的宏。我希望它能让Go_to_macro()函数输入变量并运行函数。这样做的原因是,我最终会有几十个宏,我希望以这种方式运行 下面的示例代码:“调用命令”是出现问题的地方 Private Sub Worksheet_Select
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("command_des").Value <> Sheets("Back End").Range("command_be").Value Then
Dim command, number
command = Range("command_des").Value
ticker = Range("number_des").Value
Call Go_to_macro(command, number)
Else
End If
End Sub
//////////////////////////////////////////////////////////////////////////
Public Function Go_to_macro(command, number)
Range("command_be").Value = command
Range("command_" & command).Value = Range("command_be").Value
If Range("number_" & command).Value <> Range("number_be").Value Then
Call command
Else
End If
End Function
//////////////////////////////////////////////////////////////////////////
Sub DES()
Cells(1,1).Value = "Hello World!"
End Sub
/////////////////////////////////////////////////////////////////////////
Sub FA()
Cells(1,1).Value = "Goodbye World..."
End Sub
/////////////////////////////////////////////////////////////////////////
Private子工作表\u selection更改(ByVal目标作为范围)
如果范围(“命令标示”).值表(“后端”).范围(“命令标示”).值,则
Dim命令,数字
command=范围(“command_des”).值
ticker=范围(“编号”).值
调用Go_to_宏(命令,编号)
其他的
如果结束
端接头
//////////////////////////////////////////////////////////////////////////
公用函数Go_to_宏(命令、编号)
范围(“命令”)。值=命令
范围(“命令和命令”)。值=范围(“命令和命令”)。值
如果是范围(“数字”&命令)。值范围(“数字”)。值,则
呼叫命令
其他的
如果结束
端函数
//////////////////////////////////////////////////////////////////////////
副署长()
单元格(1,1)。Value=“你好,世界!”
端接头
/////////////////////////////////////////////////////////////////////////
副FA()
单元格(1,1).Value=“再见世界…”
端接头
/////////////////////////////////////////////////////////////////////////
关于工作的想法
最后,如果我把“DES”写进namedrange,我应该在A1单元中得到“Hello World”,如果我把“FA”写进相同的namedrange,我应该在A1单元中得到“再见世界…”。这样您就可以清楚地了解输出。您可以使用
Application.Run command
(仅供参考,
Call
关键字已过时,不应使用。而不是
Call Go_to_macro(command, number)
使用
)您可以使用
Application.Run command
(仅供参考,
Call
关键字已过时,不应使用。而不是
Call Go_to_macro(command, number)
使用
)