私のコードをもう少し多態性にすることで、私のコードをちょっと変えようとしています。私は5つのタブがあるuserformを持っています。各タブには、実行時にコントロールを動的に配置する3つの列があります。クラスオブジェクトを使ってコレクションを作成する
私はこのフォームの作成を開始するので、各コントロールのすべてのトップと左の位置を統合することを検討しています。
今私はこのような変数を持っています。私がやりたいのは何
Tab0StartFromTop
Tab1StartFromTop
Tab2StartFromTop
Tab3StartFromTop
Tab4StartFromTop
Tab0Col1Left
Tab0Col2Left
Tab0Col3Left
''you get the picture
は今、私はこのような、または何らかの方法でそれをアクセスすることができました。この
Dim TabAttributes(0 To 4) As Collection
Dim ColumnAttributes As clsColumn ''clsColumn is a class object with properties for both .Top and .Left
Dim ColumnAttributeCollection As Collection
''Load Up my initial data. Distance from top will be incremented as I add controls
Set ColumnAttributes = New clsColumn
ColumnAttributes.Top = StartFromTop
ColumnAttributes.Left = StartFromLeft
''load all 3 objects into the (0) zero index for tab0
ColumnAttributeCollection(1).Add ColumnAttributes
ColumnAttributeCollection(2).Add ColumnAttributes
ColumnAttributeCollection(3).Add ColumnAttributes
''Now stick it inside my TabAttributes
TabAttributes(0).add ColumnAttributeCollection
のようなものです。複数のコントロールは、その特定のタブ上の特定の列に追加されるIトップ整数を調整する必要があります各制御を介してIループとしても
For each blah..
TabAttributes(MyControl.Tabindex).Column(MyControl.ColumnIndex).Top
TabAttributes(MyControl.Tabindex).Column(MyControl.ColumnIndex).Left
Next
。
TabAttributes(MyControl.Tabindex).Column(MyControl.ColumnIndex).Top = _
TabAttributes(MyControl.Tabindex).Column(MyControl.ColumnIndex).Top + 40
私はそれが合理的であることを望みます。事前に感謝の意を表します。
これを読んでいるところにはどこか質問がありませんでした。コントロール自体の '.Top'と' .Left'を使うことができない理由はありますか?私は、それらを複製することにどんな利益があるのか正確には分かりません。 – Comintern
[VBAのカスタムコレクションクラス](http://www.cpearson.com/excel/CollectionClass.aspx)を参照してください。 – dee