Vba 使用变量作为宏的名称

Vba 使用变量作为宏的名称,vba,excel,Vba,Excel,这可能是一个相当简单的“不,你不能”的答案。但是,如果你们中有人知道如何使这项工作,我将非常感激 我有一个宏叫“DES”,另一个宏叫“FA”。当我将单元格更改为“DES”或“FA”时,我希望它运行“DES”或“FA”宏。我不知道如何使用一系列if/else逻辑来确定要运行的宏。我希望它能让Go_to_macro()函数输入变量并运行函数。这样做的原因是,我最终会有几十个宏,我希望以这种方式运行 下面的示例代码:“调用命令”是出现问题的地方 Private Sub Worksheet_Select

这可能是一个相当简单的“不,你不能”的答案。但是,如果你们中有人知道如何使这项工作,我将非常感激

我有一个宏叫“DES”,另一个宏叫“FA”。当我将单元格更改为“DES”或“FA”时,我希望它运行“DES”或“FA”宏。我不知道如何使用一系列if/else逻辑来确定要运行的宏。我希望它能让Go_to_macro()函数输入变量并运行函数。这样做的原因是,我最终会有几十个宏,我希望以这种方式运行

下面的示例代码:“调用命令”是出现问题的地方

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)
使用

)