2017-02-24 11 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 

そして、ここでは、モジュールのコードサンプルです:ILEDからの提案に基づき

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

「ランダムに不安定になる」とはどういう意味ですか? IntelliSenseと遅さは、あなたの呼び出しが遅れていることが原因です。それらを早期にバインドしたい場合は、インターフェイスメンバーとして宣言します。 – Comintern

+0

「ランダムに不安定になる」とは、明らかに理由がなく「Microsoft Excelが動作を停止しました」というメッセージが定期的にクラッシュすることを意味します。私は以前に、事前バインディング(ワークシートなど薄暗いSHT)を使用しようとしましたが、カスタムプロパティを返すことができませんでした。私はあなたが「インターフェイスのメンバーとして彼らを宣言する」という意味をよく分かりません。説明してください。どうも – LewM

答えて

0

、私が決めました空白のワークシートを作成し、名前をshtPropertiesに変更し、カスタムのプロパティとメソッドを追加します。インテリセンスを使用して、プロジェクトのどこからでも適切な情報を変更/取得できます。 (例:shtProperties.Password = myPassword)。各シートがアクティブになると、私は単にshtPropertiesのカスタムプロパティをクリアして、activesheetの新しいプロパティにリセットします。もうクラッシュしない。提案のおかげでおかげさまで

関連する問題