0

オブジェクト変数を作成する基本的な関数で、ユーザーフォームに表示されるどのようなオブジェクトを参照できますか?

たとえば、私はそれを知っています

    Dim button As CommandButton
    Set button = CommandButton1
    button.Caption = "Text I can change for this object."

CommanButton1 のプロパティを実行して変更します。これは、不一致エラーのため、ユーザーフォームのラベルまたはテキストボックスでは機能しないようです。この方法で使用できるオブジェクトのリストはありますか?また、このようなラベルやテキスト ボックスを配列に使用する方法はありますか?

4

1 に答える 1

0

コメントで、ユーザーフォームのタイプごとに配列を探していることを示したので...これは、ラベルで機能する例の大まかなドラフトです(MsForms.Label)。すべてのコントロールをループしますが、配列が作成されると自由に使用できます。

Option Explicit
Private labels() As MSForms.label

Private Sub PopulateLabelArray()
    Dim ctrl As Control
    Dim count As Long
    Dim lbl As Variant
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.label Then
        count = count + 1
        End If
    Next
    ReDim labels(1 To count)
    count = 0
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.label Then
            count = count + 1
            Set labels(count) = ctrl
        End If
    Next
End Sub

Private Sub UserForm_Initialize()
    Dim lbl As variant
    'Populate the label array.
    PopulateLabelArray
    'Test the array
    For Each lbl In labels()
    Debug.Print lbl.Caption
    Next
End Sub

これは改善できると確信していますが、これは機能的です。

于 2012-09-07T00:49:10.033 に答える