2

我有一个工作簿,其中有几个静态工作表,但它还需要用户导入一些工作表,我不知道他们将导入多少工作表。导入的工作表都将具有相同的格式。

我正在尝试开发一个可以使用导入的工作表名称作为参考的公式,以便该公式可以在导入的工作表中查找数据。

现在我有一个动态组合框,上面有所有工作表名称。我正在尝试编写一个代码,让我抓取用户选择的工作表(从组合框),然后在公式中使用它。

我在网站上找到了以下代码,但是我有一个动态数量的对象(表)而不是某些对象

Dim ws as Worksheet
Dim sheetName as ComboBox
Dim shtName as String

Set ws = Worksheets("Analysis Sheet")
Set sheetName = ws.OLEObjects("NameFromActiveXProperties").Object

shtName = sheetName.Value

由于公司政策,我无法上传我拥有的工作表。

我拥有的公式之一是 =MATCH('Analysis Sheet'!$A$9&"*", shtName !$A$10:$A$136) 其中 shtName 是我要设置为所选项目参考的变量组合框。谁能帮我解决这个问题?

我不擅长描述问题。如果有任何不清楚的地方,请告诉我。非常感谢!

帮助欣赏!!!

4

1 回答 1

0

您可以在这里使用几种方法。最简单的方法是将INDIRECT工作表函数与返回工作表名称的函数结合使用(您在此处仅隐式命名):

=MATCH('Analysis Sheet'!$A$9 & "*", INDIRECT("'" & shtName() & "'" & "!$A$10:$A$136"))

或者,您可以修改 shtName 函数:

Public Function shtName(SheetRange as string) as range
    Dim ws as Worksheet
    Dim sheetName as ComboBox
    Dim shtName as String

    Set ws = Worksheets("Analysis Sheet")
    Set sheetName = ws.OLEObjects("NameFromActiveXProperties").Object

    shtName = worksheets(sheetName.Value).Range(SheetRange)
End Function

...并这样使用它:

=MATCH('Analysis Sheet'!$A$9&"*", shtName("$A$10:$A$136"))
于 2013-08-21T01:09:46.220 回答