В основном я создал приложение Excel VBA, которое управляет листами Excel, поэтому в коде я использую строку «Sheet1» для обозначения первого листа книги, но когда я пытаюсь использовать это приложение с тем же кодом с французской версией Excel, он не работает, пока я не переведю «Sheet1» в «Feuil1». Поэтому мой вопрос: есть ли способ автоматически адаптировать код к любой версии Excel?Многоязычный Excel VBA Application
ответ
Вы можете использовать следующие способы, чтобы получить лист с кодом:
(1) с использованием по Sheets (sheet_index)
Таким образом, не может быть адаптируются, потому что взять лист по индексу листа (индекс листа начинается с 1). Когда лист заменяет место, он не может получить доступ к правильному листу. Поэтому его не следует использовать.
For example: Set Feuil1Sheet = Sheets(1)
(2) с использованием по (имя) редактора VBA
Я думаю, что этот способ не следует использовать никогда, потому что он берет лист по имени кода, который может только видимый Редактор VBA (показывает как (Name)
поле в свойствах листа). Я думаю, вы используете этот способ для получения первого листа. Итак, вы не получите правильный лист. Одна вещь, которую вам нужно знать, это то, что code name
каждого первого листа может быть не всегда Sheet1
. Это может быть Sheet2
или Sheet4
и т.д.
For example: Set Feuil1Sheet = Sheet1
(3) с помощью Worksheets ("листовой имя") или Sheets ("имя-лист")
Это последний способ является очень совместимым и может быть адаптирован в любом месте Excel, потому что он берет лист по его названию. Итак, если имена равны, вы получите правильный лист. Итак, используйте это для получения листа.
For example: Set Feuil1Sheet = Worksheets("Feuil1") or Set Feuil1Sheet = Sheets("Feuil1")
Единственный возможный способ, о котором я могу думать, всегда ссылаться на «sheet1» на местном языке - это следующий код.
Option Explicit
Public Sub GetLocalNameForNewSheets()
Dim strSheetName As String
Dim i As Long
i = ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets.Add After:=Worksheets(i)
strSheetName = ActiveWorkbook.Worksheets(i + 1).Name
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets(i + 1).Delete
Application.DisplayAlerts = True
Debug.Print strSheetName
For i = 1 To Len(strSheetName)
While IsNumeric(Mid(strSheetName, i, 1))
strSheetName = Replace(strSheetName, Mid(strSheetName, i, 1), "")
Wend
Next i
Debug.Print strSheetName
Debug.Print strSheetName & "1"
End Sub
В принципе, я прошу Excel создать новый лист и назову его для меня. Затем я получаю новое имя, которое является «листом» на локальном языке и удаляет из строки номер. В конце вы можете добавить число «1» для ссылки на первый лист.
- 1. Unhide Excel Application Session
- 2. Динамические данные Excel VBA validaiton дает ошибку «Application-defined object»
- 3. VBA Excel-application.counta() throw application and object-defined error
- 4. Excel Application не бросить
- 5. excel in android application
- 6. VBA 1004 Application или Object defned ошибка
- 7. Simplying Excel VBA code
- 8. Multiple Replace excel VBA vba
- 9. Ошибка выполнения Vba Excel Vba?
- 10. Excel VBA XML Навигация
- 11. Таблица Excel Excel в VBA
- 12. Многоязычный и многоязычный сайт Django-CMS
- 13. Excel Interop: отличия Application и ApplicationClass
- 14. VBA Excel Import
- 15. Excel VBA: Match Cell Color
- 16. Excel vba | запуск макроса доступа из excel
- 17. VBA Excel реализует функцию COUNTIF
- 18. Workbook.save не работает VBA EXcel
- 19. MIME media application application/vnd.ms-excel не найден
- 20. Многоязычный coreNLP
- 21. Многоязычный CMS?
- 22. Многоязычный ePub
- 23. Многоязычный перевод
- 24. Многоязычный сайт
- 25. Offline.js - Многоязычный
- 26. Yii2 - Многоязычный
- 27. Outlook VBA Вызов макроса Excel
- 28. Excel VBA работает при записи
- 29. Excel VBA Определенная ошибка объекта
- 30. Excel VBA - Ошибка выполнения '1004'
Я не думаю, что все это возможно в некотором роде, поскольку разные страны использовали разные разделители и т. Д. В своем коде. Это означает, что вы можете использовать «Таблицы (1). Выберите« вместо »« Лист1 », если он находится в фиксированном положении. – Trum
Я не использовал Excel на любом другом языке - когда вы говорите« Лист1 », означает имя вкладки или кодовое имя для листа? В окне проекта VBE говорится: «Лист1 (Feuil1)» для листов? Если это так, вы можете использовать кодовое имя для ссылки на лист: 'Debug.Print Sheet1.Range (« A1 »). Адрес' в отличие от' Debug.Print Worksheets («Sheet1»). Range («A1»). ' –