2010-12-08 101 views
2

我相信在Excel中使用全局範圍名稱可能更好。在Excel 2003中,當使用(我將調用的)A列左上角的名稱輸入框創建範圍時,我知道它們是全局的。我知道這是可能的,儘管在大多數情況下,不可能在具有相同名稱的工作表上本地存在一個範圍,這會在Excel和VBA中導致非常混亂的行爲?令人信服的在Excel中使用局部範圍的參數在全局範圍內

我已經谷歌搜索,沒有找到可能有關該主題的文章(我可能不得不在這之後寫一篇自己的博客)。我想知道其他專業Excel開發人員在做什麼以及爲什麼?

回答

1

我認爲全球與本地問題取決於您處理的用戶類型以及您構建的解決方案類型。 Charles可能會與用戶大量投資範圍和公式的解決方案合作;我深入VBA代碼。這裏所要求的方法有着天壤之別。我不會說查爾斯是錯的 - 他可能適合他開發的解決方案。但是他錯了me

我使用了很多模塊化解決方案,這些解決方案以編程方式在不同的工作表上生成相同的範圍。我廣泛使用名稱是因爲它有助於限制在代碼中使用硬編碼的範圍引用,並且還提供了一種可以在不同模板之間運行的通用解決方案的方法。我很少使用標準範圍下拉式下一個公式欄創建範圍 - 創建本地名稱時,騾子會產生一個正確的疼痛。

查爾斯關於全球/本地混淆的觀點並不適用於我,因爲它全部是程序化的,這種錯誤將會是一個錯誤,而不是用戶的挫敗感。他們沒有看到這些範圍。

在用戶與名稱交互的情況下,我希望Excel以不同的方式簽署全局名稱以避免用戶混淆。根據我的經驗,如果我已經定義了範圍,用戶不會遇到麻煩。他們不必擔心本地/全球問題,因爲名稱已經存在。

讓我們不要涉及範圍名稱是相對與絕對的問題......這是另一個用戶混淆蠕蟲的可能!

+0

我也來自VBA重環境,我認爲我會說本地名稱比全局名稱更可取。我必須做一個關於它的博客文章,看看人們認爲一旦我合理化後會怎麼想。感謝您的意見 – FinancialRadDeveloper 2010-12-23 14:14:39

2

關於使用本地名稱的可取性,意見不同。
一方面,希望儘可能限制範圍,所以使用本地。
另一方面,如果您有重複的本地名稱(同一名稱存在於多張紙上),錯誤的可能性會迅速增加,並且如果您沒有重複的本地名稱,則使用它們沒有多大意義。另外,很容易無意中使用與本地名稱相同的名稱創建一個全局名稱:這會導致易混淆且容易出錯(有些人會說錯誤)Excel/VBA行爲。
免費提供的名稱管理器插件(由Jan-Karel Pieterse和我自己撰寫)使得本地名稱的處理變得更容易,允許在本地和全局之間輕鬆轉換,改進了本地名稱的可見性,過濾和標記重複的全局/本地名稱。
從VBA的角度來看,我很少使用它們,但從公式的角度來看,偶爾有時候本地名稱是有用的。

1

您的工作簿是一個商業應用程序,表單是模塊。想想它就像任何軟件問題。

你想盡可能多地限制你的名字範圍:

  1. 最大限度地減少意外和不可見的濫用。
  2. 避免擔心之前是否使用過某個名稱。
  3. 爲了儘量減少搜索「什麼是......改變了這個?」的範圍
  4. 因爲它不花你任何東西,全局變量不會賦予任何好處。

當地名跨表引用是額外的工作,真的不太可能是偶然的,所以我必須與當地的重複名稱增加了出錯的可能性查爾斯不同意。

有一個原因,當我們發明結構化編程時,我們也擺脫了空白共同。理由同樣適用於電子表格。

有一件事可以幫助您使電子表格模型變得更加強大:當您想要聲明一個全局,或者您正在做一個跨表參考時,請考慮創建一個函數還是更好類。情況並非總是如此,但我發現,通過封裝「有趣」的計算,我可以減少複雜性。

0

這是一個觀點:不同的用戶會有不同的偏好。

我使用全局名稱,因爲我需要一個方便且穩定的標籤來標識整個工作簿中的範圍 - 在整個項目中的任何工作表和VBA流程的公式中。

本質上,我將一個命名的範圍視爲一個全局變量,並且是穩定橫向過程的基本工具。

本地名稱用於在具有相同名稱的不同範圍內聲明不同範圍,這是混淆和錯誤的祕訣。話雖如此,喬爾古德溫提供了一個很好的理由使用本地名稱:模塊化代碼(如模板生成器),在不同的工作表上做同樣的事情。我已經構建了完全相同的模板生成器。

我會更多地使用本地名稱,如果有更好的接口可用於查看它們並在VBA中使用它們 - JKP的名稱管理器在我工作的地方有很多用途,但它不能消除設計中的混淆和錯誤在微軟的實施中。