0

这似乎是一个如此简单的问题,但我似乎找不到一个好的方法来做到这一点。我想检查索引为 的 Excel 工作表的名称'n'是否不在我的 VSTO 工作簿的原始工作表名称集中。

该工作簿在模板中有 13 个工作表,程序在末尾添加更多工作表,有时在中间添加更多工作表。添加的任何工作表都不会被命名为模板中包含的工作表名称之一(我已成功阻止此)。我经常想对添加的所有不属于原始 13 的工作表采取措施,因此我希望尝试使用数组或初始模板中存在的 ThisWorkbook.Names 列表。

现在我的工作是:

 If ThisWorkbook.Worksheets(n).Name <> Sheet1.Name OrElse ThisWorkbook.Worksheets(n).Name <> wbX.Sheet2.Name ..... <>wbX.Sheet13.Name

不用说这很麻烦。我是否以正确的方式考虑这一点,还是有更简单的方法来检查名称是否不在原始工作表名称中?

我知道如果我可以在 13 之后强制使用所有工作表,我可以只使用索引,但目前这对于项目的意图是不可行的。

4

1 回答 1

1

在启动时将模板中的所有工作表名称填充到列表中:

Dim templateSheets As List(Of String) = new List(Of String)
For Each sheet As Excel.Worksheet in Globals.ThisWorkbook.Worksheets
  templateSheets.Add(sheet.Name)
Next

然后您的上述查询可以缩写为

If Not templateSheets.Contains(ThisWorkbook.Worksheets(n).Name) Then
于 2013-06-01T20:51:12.770 回答