VBAの新機能 - OOP言語でゲッターとセッターを使用するようなシートプロパティを使用しようとしています。私は(明確にするために簡略化)シート1に次のコードを持っている:Excel VBA - シートプロパティはフィールドを割り当てません。
Option Explicit
Private bAllowChange As Boolean
Public Property Let AllowChange(bLetAllowChange As Boolean)
bAllowChange = bLetAllowChange
End Property
IはAllowChange
プロパティは、別のモジュール内のサブによって呼び出されたときに、bAllowChange
フィールドはそれに応じて更新されることが期待されます。 VBEのデバッグ機能を使用することにより、私はAllowChange
が正しい値(bLetAllowChange
が正しい値をとる)が、bAllowChange
に値を割り当てていないライン
bAllowChange = bLetAllowChange
を渡されていることがわかります。 bAllowChange
をPublicに設定すると、期待どおりに動作しますが、これは最初にプロパティを使用する目的に反するものです。これはおそらくVBAの範囲について理解していない単純なものです。助言がありますか?前もって感謝します。
あなたは本当に、あなたがしたい聞かせて/ getを使用したい場合は、クラスを設定することです。このリンクを参照してください。たとえば、http://www.cpearson.com/excel/classes.aspx –
シートはVBAのクラスではありませんか?もしそうなら、プロパティはそれらのために働きませんか?そうでない場合は、通常のSubs/Functionsを使用する必要がありますか?私はWorksheet_Changeサブルーチンをサポートするためにこれらのプロパティを使用しています。そのため、私はSheetで作業しています。別のモジュールではありません。 –
私は、プロパティが永続的であることを期待していると考えています。ではない。コードを解除するかワークブックを閉じると、プロパティがリセットされます。ワークブック[Workbook.CustomDocumentProperties](https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-customdocumentproperties-property-excel)にカスタムプロパティを追加できますが、個別のワークシートには追加できません。 –