2

古い VB6 コードをリファクタリングしていると、本当に奇妙な動作に出くわしました。コントロール配列の要素の DragMode プロパティを設定しようとすると、このコントロールをその配列から分離すると、コンパイラは「メソッドまたはデータ メンバーが見つかりません」と通知します。

以下の私の例を参照してください。「myControl」は、テキストボックスを含むユーザーコントロールに他なりません。'Controls' は、myControls を含むコントロール配列です。最初のループは機能しますが、2 番目のループは機能しません。

Dim i As Integer
Dim ctrl As myControl

For i = 0 To 2
    myControls(i).DragMode = vbAutomatic
Next i

For Each ctrl In myControls
    ctrl.DragMode = vbAutomatic
Next

アップデート:

@wqw のおかげで、for each ループが機能するようになりました。私にとって機能するコードは、次のようになります。

Dim ctrlExt As VBControlExtender
Dim ctrl As myControl

For Each ctrlExt In myControls

    Set ctrl = ctrlExt

    ctrlExt.DragMode = vbAutomatic
    ctrl.SpecificProperty = "Test"
Next
4

1 に答える 1

2

試すDim ctrl As VBControlExtender

これは機能します

Dim i As Integer
Dim ctrl As VBControlExtender

For Each ctrl In Controls
    ctrl.DragMode = vbAutomatic
Next

For i = MyControls.LBound To MyControls.UBound
    MyControls(i).DragMode = vbAutomatic
Next i
于 2013-02-14T14:57:40.970 に答える