这一行:
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
而不是变量。
我需要做些什么才能让它看一下传递的变量?
答案 0 :(得分:3)
您可以使用Application.Run
运行由变量命名的函数。
请参阅下面的代码 - strFunction
(可能是SheetNameReturn
)获取函数的名称(可选择使用模块前缀),然后将该字符串传递给Run
以调用函数
<强>模块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
<强>单词数:强>
Option Explicit
Function FirstBBSName()
FirstBBSName = "Sheet1"
End Function
Function SecondBBSName()
SecondBBSName = "Sheet2"
End Function
Function ThirdBBSName()
ThirdBBSName = "Sheet3"
End Function