当您尝试 index/select Excel VBA 中的工作表时,是否有任何可能的方法来忽略工作表名称中的重音符号?

Is there any possible way to ignore accents in a worksheet's name when you're trying to index/select a worksheet in Excel VBA?

问题是,当我有 MS Office 2013 时,我可以在 Excel 作品中使用字母 sheet 名字,如“Ó、Ő、Ű”等,但我有一个 OS 和我公司最近的软件更新(从 Win7 到 Win10,从 MS Office 2013 到 2016),现在一些带有这种变音符号的字符已被替换为没有这些变音符号的字母,例如 "O, U".

例如,我有一个作品sheet 名为:Sheet1 (Összeszámolás) 在 MS Office 2013

现在工作sheet 被称为:Sheet1 (Osszeszámolás) 在 MS Office 2016

如果我在调用作品sheet时使用最后提到的作品sheet名称,那么拥有MS Office 2013的人将无法使用excel(VBA 没有找到实际的 sheet)。

使用 worksheet 数字编制索引不起作用(例如 Sheets(2).Select),因为 MS Office 2013 索引与 2016 版本不同. Sheets(2).Select select是 MSO 2013 中的第二部作品sheet 但在 2016 年它是 select 的第三部作品一个..

我可以让 excel 忽略重音,这样 Sheets("Osszeszamolas") 就可以 select Sheet1 (Összeszámolás)Sheet1 (Osszeszámolás)

注意:我试图寻找语言选项,但没有任何选项可以处理这些特定的口音..

转到 VBA,并在其中重命名作品 sheet 的 VBA 名称,并使用该名称。

所以转到VBA,按Ctrl+R,找到sheet,单击一次,必要时按F4弹出属性,更改属性名称(不是“ (姓名)”但 "Name").

从现在开始,您可以在 VBA-代码中使用该名称来直接引用该作品sheet-对象。所以如果你给的名字是 "ThisIsMyVBANameForThisWorksheet",你可以在 VBA 和

中编码
ThisIsMyVBANameForThisWorksheet.Activate

如果没有此选项,您可以使用 sheet 的默认 VBA 名称。在英文办公中,这些是Sheet1,Sheet2等。(如果您在公司内部使用多种语言的Office,那也不是一种选择。)

所以

Sheet1.Activate

如果上面没有work/suffice我还有一个更强大的解决方案:

Function ReliableWorksheet(x) As Worksheet
    Dim W As Worksheet
    For Each W In ThisWorkbook.Worksheets
        If W.Index = x Then Set ReliableWorksheet = W
    Next
End Function

然后使用

ReliableWorksheet(1).Activate

这应该适用于所有 office 版本,所有语言,但我无法测试 O2013 以外的版本。