2009-09-08 31 views
3

我的一位朋友擔任保險公司的分析師,並使用Visual Basic for Applications(VBA)編寫腳本。語言無關的方式來引用「表」?

由於她的公司在不同的歐洲國家設有辦事處,她需要儘可能使語言無關。

最近出現的一個問題是如何處理Excel文檔並參考工作表(例如Sheet1,Sheet2),而無需在歐洲主要語言中翻譯此術語。

有人知道Excel是否提供了一個常量列表,她可以使用它訪問不同的信息片段,而不管Windows/Excel的本地化版本如何?

謝謝。

+0

我相信你可以通過索引,而不是按名稱引用表。 – 2009-09-08 11:53:31

+0

@Cory - 糾正我,如果我錯了,但不是表格的索引更改基於顯示順序是哪裏? – warren 2009-09-08 11:58:40

+0

是的,它會的,所以這可能不適合你,但至少你不必擔心語言。 – 2009-09-08 11:59:40

回答

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中的現有引用(在單元格函數中)會自動保持最新。

+0

謝謝大家。 – Gulbahar 2009-09-08 13:36:46

+0

除了需要獲取特定工作表的引用的情況外,對嗎?如果你使用序號,那就像名字一樣易變,對吧?過去我已經完成了一些VBA,但是我承認已經有一段時間了,現在我只做零星的東西。有沒有被接受的「最佳實踐」? – 2009-11-22 16:26:50

+0

我認爲在某些時候它需要成爲慣例。如果要從代碼中引用特定工作表,則可能必須鎖定工作簿以防止發生更改,以使代碼健壯。 – Tomalak 2009-11-23 00:28:13

0

在VBA編輯器中,您可以重命名工作表對象;這完全與顯示在屏幕底部標籤上的工作表名稱分開。

我通常將其重命名像wksData和wksSummary,並使用類似的代碼

wksSummary.Range("A1").Value = "abc" 

用戶可以重命名工作表按照自己的意願,但VBA參考保持不變。

工作表的名稱可以被檢索,如下面的例子:

MsgBox wksSummary.Name