gpt4 book ai didi

vba - 通过传递的变量引用函数名称

转载 作者:行者123 更新时间:2023-12-03 02:30:02 29 4
gpt4 key购买 nike

这一行:

Set ws = wb.Worksheets(Module2.FirstBBSName)

将工作表设置为函数返回的名称,这将是工作表的名称。

但是,在此子中,这需要更改为:

Set ws = wb.Worksheets(Module2.SecondBBSName)

Set ws = wb.Worksheets(Module2.ThirdBBSName)

等等。我需要通过变量传递 call 中的名称来完成此操作。我们将其命名为 SheetNameReturn

所以如果我发送:

Call NameOfMySub ("SecondBBSName")

如果我使用它就不起作用

Set ws = wb.Worksheets(Module2.SheetNameReturn)

显然它是在 Module2 中寻找 SheetNameReturn 而不是变量。

我需要做什么才能让它查看传递的变量?

最佳答案

您可以运行由变量命名的函数 Application.Run .

请参阅下面的代码 - strFunction(可能是 SheetNameReturn)获取函数名称(可选地带有模块前缀),然后将该字符串传递给 运行来调用该函数。

模块1:

Option Explicit

Sub Test()

Dim wb As Workbook
Dim ws As Worksheet
Dim strFunction As String

Set wb = ThisWorkbook

strFunction = "Module2.FirstBBSName"
Set ws = wb.Worksheets(Application.Run(strFunction))
Debug.Print ws.Name

strFunction = "Module2.SecondBBSName"
Set ws = wb.Worksheets(Application.Run(strFunction))
Debug.Print ws.Name

strFunction = "Module2.ThirdBBSName"
Set ws = wb.Worksheets(Application.Run(strFunction))
Debug.Print ws.Name

End Sub

模块2:

Option Explicit

Function FirstBBSName()
FirstBBSName = "Sheet1"
End Function
Function SecondBBSName()
SecondBBSName = "Sheet2"
End Function
Function ThirdBBSName()
ThirdBBSName = "Sheet3"
End Function

关于vba - 通过传递的变量引用函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44260456/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com