Excel 与语言无关的引用方式;工作表;?

Excel 与语言无关的引用方式;工作表;?,excel,localization,vba,Excel,Localization,Vba,我的一个朋友是一家保险公司的分析师,他使用Visual Basic for Applications(VBA)编写脚本 由于她的公司在不同的欧洲国家设有办事处,她需要使脚本尽可能独立于语言 最近出现的一个问题是如何处理Excel文档和参考表格(如Sheet1、Sheet2),而无需将该术语翻译成主要的欧洲语言 是否有人知道Excel是否提供了常数列表,无论Windows/Excel的本地化版本如何,她都可以使用这些常量访问不同的信息 谢谢。在VBA中,不应使用工作表的硬编码名称来引用它们 Dim

我的一个朋友是一家保险公司的分析师,他使用Visual Basic for Applications(VBA)编写脚本

由于她的公司在不同的欧洲国家设有办事处,她需要使脚本尽可能独立于语言

最近出现的一个问题是如何处理Excel文档和参考表格(如Sheet1、Sheet2),而无需将该术语翻译成主要的欧洲语言

是否有人知道Excel是否提供了常数列表,无论Windows/Excel的本地化版本如何,她都可以使用这些常量访问不同的信息


谢谢。

在VBA中,不应使用工作表的硬编码名称来引用它们

Dim s As Worksheet

For Each s In ActiveWorkbook.Sheets
  DoSomethingWith s
Next s


但是,在单元引用中,使用实际图纸名称是不可避免的。VBA可以根据需要构建这些参考。Excel会自动更新现有引用(单元格函数中的引用)。

在VBA编辑器中,您可以重命名工作表对象;这与屏幕底部选项卡上显示的工作表名称完全不同

我通常将它们重命名为wksData和wksSummary,并使用如下代码

wksSummary.Range("A1").Value = "abc"
用户可以根据自己的意愿重命名工作表,但VBA引用保持不变

可以检索工作表的名称,如下例所示:

MsgBox wksSummary.Name

我相信您可以通过索引而不是名称来引用工作表。@Cory-如果我错了,请纠正我,但是工作表的索引是否会根据显示顺序中的位置而改变?是的,它会改变,因此对您来说,这可能不是一个可行的解决方案,但至少你不必担心语言。除了需要获取特定工作表的引用的情况,对吗?如果你用序数,那和名字一样易变,对吗?我过去做过很多VBA,但承认已经有一段时间了,我现在只做零星的事情。是否有一个公认的“最佳实践”来实现这一点?我认为在某种程度上它需要成为惯例。如果要引用代码中的特定工作表,可能必须针对更改锁定工作簿,以使代码健壮。
Dim i As Long

With ActiveWorkbook.Sheets
  For i = 1 To .Count
    DoSomethingWith .Item(i)
  Next i
End With
wksSummary.Range("A1").Value = "abc"
MsgBox wksSummary.Name