2012-08-03 92 views
1

有誰知道是否有辦法保護圖表名稱,以便用戶無法更改它?我有很多引用各種圖表的代碼。如果用戶要更改一個或多個圖表名稱,事情會變得很匆忙。保護圖表名稱

+0

如果我沒有錯,那麼你必須保護那張表 – 2012-08-03 05:40:01

+2

爲什麼不使用圖表索引而不是名稱。 – brettdj 2012-08-03 07:20:20

+0

@brettdj:好點!老實說,這甚至沒有跨越我的想法:) – 2012-08-03 08:09:34

回答

1

我可能有一個解決方案,但它會帶來一些開銷。

您可以爲每個正在使用的圖表添加實際圖表,並且希望在工作簿中具有名稱保護功能。它們在工作簿中顯示爲單獨的選項卡(如表格)。

看起來像在這裏:

enter image description here

右鍵點擊您的圖表,選擇,然後新表移動圖表。這樣,您將擁有「更好」的圖表對象,您可以通過VBA或通過Ribbon-Menue單獨保護圖表對象,並且您有一個內部CodeName

喜歡這裏:

enter image description here

與內部代號爲您的用戶的煩惱應該做的,因爲他們可以說出他們是怎樣想你也能做;)我不信任指數eighter並討厭使用用戶定義的名稱 - 代碼名稱是最好的,除了在代碼中處理,但這只是一個主要的vba缺陷。

我猜測,那些額外的圖表會讓您厭煩一點,所以只要讓它們不可見並在表格中將它們的副本用作ChartObjects。

這應該是它。

此外,我偶然發現了一個有趣的事實,即你只能通過將它保護爲受保護表中的嵌套對象來保護圖表名。即使用我的嘗試,用戶也可以更改名稱,除非使用它保護工作簿結構和所有表/圖表名稱。

希望這有助於;)

+0

有趣的想法。感謝你的想法。我從這個項目中轉移了一下,並沒有時間回到這個問題上。我感謝您花時間思考這個問題! – Alex 2012-10-11 03:53:21

0

嘗試類似這樣的代碼。將「Sheet1」更改爲「Chart#」。最後一點(註釋掉& Workbook.Sheets.Count)可以重新添加到您的代碼中,以便在您記下許多圖表時增加一個增量命名。

ThisWorkbook.VBProject.VBComponents(Sheets("Sheet2").CodeName).Name = "NewChartName" ' & Workbook.Sheets.Count