我的一位朋友是一家保险公司的分析师,使用Visual Basic for Applications(VBA)编写脚本。
由于她的公司在不同的欧洲国家设有办事处,因此她需要尽可能使脚本与语言无关。
最近出现的一个问题是如何处理Excel文档并引用工作表(例如Sheet1,Sheet2),而不必将这个术语翻译成主要的欧洲语言。
有人知道Excel是否提供了一些常量列表,无论Windows / Excel的本地化版本如何,她都可以使用这些常量来访问不同的信息?
谢谢。
答案 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