多语言Excel VBA应用程序

我基本上创build了一个处理Excel工作表的Excel VBA应用程序,因此在代码中,我使用string“Sheet1”来引用工作簿的第一个工作表,但是当我尝试使用相同的代码与法语版本的Excel,它不工作,直到我将“Sheet1”翻译成“Feuil1”。 所以我的问题是,是否有办法自动适应代码的任何版本的Excel?

您可以使用以下方法从代码中获取工作表:

(1)使用表格(sheet_index)

这种方式不能适应,因为它采取一张一张的索引(表索引从1开始)。 当换单的地方,它不能访问正确的表,所以不应该使用。

 For example: Set Feuil1Sheet = Sheets(1) 

(2)使用VBA编辑器(名称)

我认为这种方式不应该使用永远不会使用,因为它采取代码名称,只能由VBA编辑器( 它显示为(Name)表单属性中的(Name)字段(Name)可见的工作表 。 我想你正在用这种方式获得第一张纸。 所以,你没有得到正确的表格。 有一件事你需要知道的是每个第一张纸的code name可能不总是Sheet1 。 它可以是Sheet2Sheet4

 For example: Set Feuil1Sheet = Sheet1 

(3)使用工作表(“工作表名称”)或工作表(“工作表名称”)

这最后一种方式是一个非常兼容的方式,可以在任何地方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创build一个新工作表并为我命名。 然后,我得到当地语言的“表”的新名称,并从string中删除数字部分。 最后,您可以添加数字“1”来引用第一个工作表。