2017-02-24 61 views
0

我正嘗試在用戶看不到的工作表中創建自定義屬性。我的理由如下:Excel(2013)VBA - 向工作表添加自定義屬性

  • 避免CustomProperties集合(不能直接訪問),
  • 避免使用全局變量(得到的工作簿中隨機掉落保存),或
  • 使用工作表上的特定命名的單元格檢索和插入值似乎很慢。

下面的代碼似乎工作,我可以使用所創建的sht對象的所有需要​​的工作表屬性和方法。缺點是智能喪失,這對我來說不是問題。

儘管這似乎有效,但我的代碼現在似乎隨機變得不穩定,除了我可能違反了某些事情之外,我找不到任何直接原因。

我目前在5個工作表中有7個自定義屬性。

這裏是在工作表中的代碼示例(頂部):

Private pPassword As String 
Public Property Get Password() As String 
    Password = pPassword 
End Property 
Public Property Let Password(Value As String) 
    pPassword = Value 
End Property 

這裏是一個模塊中的代碼示例:

Sub doSomething(currentSheetName as string) 
    Dim Password as String 
    Dim sht as object 
    Set sht = ThisWorkbook.Worksheets(currentSheetName) 

    Blahblahblah code 

    Password = sht.password 

    Blahblahblah code 

End sub 
+0

「隨機變得不穩定」是什麼意思?智能感知和緩慢是由於您的電話被延遲。如果你想讓它們早日綁定,請將它們聲明爲接口成員。 – Comintern

+0

「隨機變得不穩定」意味着我得到「Microsoft Excel已停止工作」,因爲沒有明顯原因而定期崩潰。我以前試圖使用早期綁定(Dim sht作爲工作表),但無法返回自定義屬性。我不確定「將它們聲明爲接口成員」是什麼意思?請解釋。謝謝 – LewM

回答

0

基於從細設的建議,我決定創建一個空白工作表,將其重命名爲shtProperties,並向其添加自定義屬性和方法。我現在可以使用智能感知並從項目的任何位置更改/檢索本質。 (例如:shtProperties.Password = myPassword)。當每個表被激活時,我只需清除shtProperties的自定義屬性,並重置爲activesheet的新屬性。沒有更多的崩潰。謝謝你的建議。