2015-08-17 3 views
0

В основном я создал приложение Excel VBA, которое управляет листами Excel, поэтому в коде я использую строку «Sheet1» для обозначения первого листа книги, но когда я пытаюсь использовать это приложение с тем же кодом с французской версией Excel, он не работает, пока я не переведю «Sheet1» в «Feuil1». Поэтому мой вопрос: есть ли способ автоматически адаптировать код к любой версии Excel?Многоязычный Excel VBA Application

+0

Я не думаю, что все это возможно в некотором роде, поскольку разные страны использовали разные разделители и т. Д. В своем коде. Это означает, что вы можете использовать «Таблицы (1). Выберите« вместо »« Лист1 », если он находится в фиксированном положении. – Trum

+0

Я не использовал Excel на любом другом языке - когда вы говорите« Лист1 », означает имя вкладки или кодовое имя для листа? В окне проекта VBE говорится: «Лист1 (Feuil1)» для листов? Если это так, вы можете использовать кодовое имя для ссылки на лист: 'Debug.Print Sheet1.Range (« A1 »). Адрес' в отличие от' Debug.Print Worksheets («Sheet1»). Range («A1»). ' –

ответ

2

Вы можете использовать следующие способы, чтобы получить лист с кодом:

(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") 
1

Единственный возможный способ, о котором я могу думать, всегда ссылаться на «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» для ссылки на первый лист.

Смежные вопросы