ForEachについて

解決


がもん  2005-06-05 06:07:17  No: 90235

リストボックスの選択した内容をテキストボックスに反映させようと考えているのですが、
ヘルプを見てみると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-05 06:34:49  No: 90236

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


がもん  2005-06-05 06:46:56  No: 90237

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

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


KURAGE  URL  2005-06-05 06:50:55  No: 90238

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


KURAGE  URL  2005-06-05 06:53:43  No: 90239

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


クラゲ  URL  2005-06-05 06:59:27  No: 90240

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-05 08:39:06  No: 90241

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


クラゲ  URL  2005-06-05 08:55:49  No: 90242

>>LESIA

GJ!

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


がもん  2005-06-05 09:02:13  No: 90243

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


てせ  2005-06-05 09:07:18  No: 90244

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加