0

私は次のコードを持っていますが、もちろん動作していませんが、それが私の意図を示唆していることを願っています.

Dim lItem As Long
Dim input_sh As Worksheet
Dim lb As ListBox
Set input_sh = ActiveWorkbook.Sheets("Input")
    For i = 1 To 4
        lb = "ListBox" & i
        For lItem = 0 To lb.ListCount - 1
            If lb.Selected(lItem) = True Then
                input_sh.Cells(1, 14 + i) = lb.List(lItem)
                lb.Selected(lItem) = False
            End If
        Next lItem
    Next i

基本的に、ユーザーフォームに4つのリストボックスがあり、リストボックスごとにforループを使用する代わりに、forループを使用して選択したアイテムを取得します。

4

1 に答える 1

0

この質問はコメントで回答されていますが、スタック内の未回答の質問が 1 つ少なくなるようにするためです (最終的には最終投票スタック内):

Dim input_sh As Worksheet
Dim lb As ListBox

Set input_sh = ActiveWorkbook.Sheets("Input")
For i = 1 To 4

    Set lb = Controls("ListBox" & i)

    ' object "lb" now contains a reference to the appropriate ListBox control.
    ' (do something with lb)

Next i

これは VB6 と VBA の違いの 1 つです。VBA ではコントロール配列を使用できません。VB6 では、すべての ListBoxes に名前を付けて (たとえば)、1 ~ 4 のインデックスMyListBoxを付けて、コードを次のようにすることができます。

Dim lb As ListBox

For i = 1 To 4

    Set lb = MyListBox(i)

    ' object "lb" now contains a reference to the appropriate ListBox control.
    ' (do something with lb)

Next i
于 2013-03-06T18:17:16.623 に答える