2017-02-24 120 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的新属性。没有更多的崩溃。谢谢你的建议。