与语言无关的方式来引用“工作表”?

时间:2009-09-08 11:51:23

标签: excel-vba localization vba excel

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

由于她的公司在不同的欧洲国家设有办事处,因此她需要尽可能使脚本与语言无关。

最近出现的一个问题是如何处理Excel文档并引用工作表(例如Sheet1,Sheet2),而不必将这个术语翻译成主要的欧洲语言。

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

谢谢。

2 个答案:

答案 0 :(得分:4)

永远不要使用硬编码的工作表名称来在VBA中引用它们。

Dim s As Worksheet

For Each s In ActiveWorkbook.Sheets
  DoSomethingWith s
Next s

Set s = ActiveSheet
DoSomethingWith s

Set s = ActiveWorkbook.Sheets.Add()
DoSomethingWith s

Dim i As Long

With ActiveWorkbook.Sheets
  For i = 1 To .Count
    DoSomethingWith .Item(i)
  Next i
End With

然而,在单元格引用中,使用实际的工作表名称是不可避免的。这些引用可以由VBA按需构建。现有的引用(单元格函数)由Excel自动保持最新。

答案 1 :(得分:0)

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

我经常将它们重命名为wksData和wksSummary,并使用类似

的代码
wksSummary.Range("A1").Value = "abc"

用户可以根据需要重命名工作表,但VBA引用保持不变。

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

MsgBox wksSummary.Name