ForEachについて

解決


がもん  2005-06-04 21:07:17  No: 90235  IP: [192.*.*.*]

リストボックスの選択した内容をテキストボックスに反映させようと考えているのですが、
ヘルプを見てみるとForEachをつかっているようです。
以下ヘルプを引用

Sub RowsSelected()
    Dim ctlList As Control, varItem As Variant

    ' リスト ボックスを示す Control オブジェクトを取得します。
    Set ctlList = Forms!社員!在籍支社
    ' 選択項目を列挙します。
    For Each varItem in ctlList.ItemsSelected
        ' 連結列の値を表示します。
        Debug.Print ctlList.ItemData(varItem)
    Next varItem
End Sub

そこでForEachを使う必要性はないんじゃ?と思い、
Debug.Print ctlList.ItemData(ctlList.ItemSelected)
としたのですがエラーになってしまいます。
なぜForEachを使う必要があるのでしょうか?
ご教示よろしくお願いいたします。

編集 削除
LESIA  2005-06-04 21:34:49  No: 90236  IP: [192.*.*.*]

ctlList.ItemsSelectedは、Itemsと複数形になっているので
リストボックスで複数選択出来るようになっているからなのでは?

編集 削除
がもん  2005-06-04 21:46:56  No: 90237  IP: [192.*.*.*]

ご返答ありがとうございます。
説明不足でしたね。
選択項目はひとつなのですが私の書き方ではエラーになってしまいます。
ForEachの意味もいまいちわからないのですが、
分かりやすいサンプルなどありませんでしょうか?

検索サイトでFor Eachとは  等と検索しても全くHITしないので。
他力本願で申し訳ないですがどうかよろしくお願いいたします。

編集 削除
KURAGE  URL  2005-06-04 21:50:55  No: 90238  IP: [192.*.*.*]

>Debug.Print ctlList.ItemData(ctlList.ItemSelected)
Debug.Print ctlList.ItemData(varItem)
ですね。。。

編集 削除
KURAGE  URL  2005-06-04 21:53:43  No: 90239  IP: [192.*.*.*]

間違えました。
気にしないでください。

編集 削除
クラゲ  URL  2005-06-04 21:59:27  No: 90240  IP: [192.*.*.*]

For Each varItem in ctlList.ItemsSelected
の意味ですが、
ctlList.ItemsSelectedで選択されているアイテムを
順番に、varItemに入れていくのです。

For Eachを使わない場合、次のコードに
なります。長いですよね、コード w
無駄なので、For Eachを使うわけです。

For i=0 to List1.ListCount -1
List1.Index = i
If List1.Selected = True Then
  xxxx = List1.ItemData(i)
End If
Next i

編集 削除
LESIA  2005-06-04 23:39:06  No: 90241  IP: [192.*.*.*]

もし、選択項目が1つならFor Eachを使わずに
Debug.Print ctlList.ItemData(ctlList.ItemsSelected(0))
で、OKです。

編集 削除
クラゲ  URL  2005-06-04 23:55:49  No: 90242  IP: [192.*.*.*]

>>LESIA

GJ!

選択行がsingleならその通り!

編集 削除
がもん  2005-06-05 00:02:13  No: 90243  IP: [192.*.*.*]

おぉ!
親切にありがとうございます。
クラゲ様、なんとなくForEachの意味わかったきがします♪
LESIA様のコードで正しく動作しました。
皆様ありがとうございます。
クラゲ様のHPも拝見させていただきました。
色々な言語ができてすごいですね。
感謝感謝です。

編集 削除
てせ  2005-06-05 00:07:18  No: 90244  IP: [192.*.*.*]

ItemsSelected(0)というのが選ばれている項目の一件目ということなんですね。
私も勉強になりました。

編集 削除