Есть ли какой-нибудь возможный способ игнорировать ударения в имени листа при попытке индексировать / выбрать лист в Excel VBA? - PullRequest
0 голосов
/ 02 мая 2018

Проблема в том, что когда у меня был MS Office 2013, я мог использовать буквы в именах листов Excel, таких как «Ó, Ő, Ű» и т. Д., Но у меня недавно было обновление ОС и программного обеспечения в моей компании (от Win7 до Win10, и с MS Office 2013 по 2016), и теперь некоторые символы с такими диакритическими знаками были заменены буквами без таких знаков, как «O, U».

Например, у меня был рабочий лист под названием: Лист1 (Összeszámolás) в MS Office 2013

Теперь этот лист называется: Лист1 (Osszeszámolás) в MS Office 2016

Если я использую последнее упомянутое имя рабочего листа при вызове рабочего листа, то пользователи MS Office 2013 не смогут работать с Excel (VBA не находит нужный лист).

Индексирование с номерами листов не работает (например, Sheets (2). Выберите ), поскольку индексы MS Office 2013 отличаются от версии 2016. Sheets (2). Выберите , чтобы выбрать 2-й лист в MSO 2013, но в 2016 году он выбирает 3-й лист ..

Могу ли я заставить Excel игнорировать акценты, чтобы Sheets ("Osszeszamolas") мог выбрать либо Sheet1 (Összeszámolás) и Sheet1 (Osszeszámolás)

Примечание: я пытался искать языковые опции, но не было никаких вариантов, которые могли бы обработать эти специфические акценты ..

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Если вышеописанное не работает / недостаточно, у меня также есть более надежное решение:

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

Это должно работать на всех офисных версиях на всех языках, но я не могу протестировать его, кроме O2013.

0 голосов
/ 02 мая 2018

Перейдите в VBA, переименуйте имя VBA в рабочей таблице и используйте это имя.

Итак, перейдите в VBA, нажмите Ctrl + R, найдите лист, щелкните один раз, нажмите F4, если необходимо, чтобы открыть свойства, измените имя свойства (не «(Имя)», а «Имя»).

Теперь вы можете использовать это имя в своем VBA-коде для прямой ссылки на этот объект листа. Поэтому, если вы даете имя «ThisIsMyVBANameForThisWorksheet», вы можете кодировать в VBA с помощью

ThisIsMyVBANameForThisWorksheet.Activate

Если это не вариант, вы можете использовать имена VBA по умолчанию для листов. В английском офисе это Sheet1, Sheet2 и т. Д. (Если вы используете несколько языков Office в вашей компании, это тоже не вариант).

Итак

Sheet1.Activate
...