掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WebBrowserでコンボ内のデータを選択するには? (ID:79596)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 色々試してみていて、 (中略) > でうまく選択できるようになりました。 解決済みのようですが、一応、補足しておきます。 getElementBy**** 系メソッドと、 getElementsBy**** 系メソッドを混同しないように注意してください。 前者は、対象のエレメントその物を返しますが、 後者は、対象のエレメントを含むコレクションを返します。 そして、指定されたエレメントが無い場合、前者はNothingを返し、 後者の場合は、要素数(lengthプロパティ)が0のコレクションとなります。 (コレクションの個々の要素を得るには、itemプロパティまたはFor Eachを使います) # なお、前者に相当するのはgetElementByIdメソッド、後者は # getElementsByNameメソッドおよびgetElementsByTagNameメソッドです。 > Set objText = objTag.getElementsByName("Combo1") つまり上記のコードで、getElementsByNameメソッドで得られる戻り値は、 Combo1のエレメントではなく、「Combo1を含むコレクション」なのです。 Combo1自体を得たい場合には、 Set objText = objTag.getElementsByName("Combo1")(0) もしくは、 Set objText = objTag.getElementsByName("Combo1").item(0) のように記述する必要があります。 # 一番初めの投稿では、objTextがエレメントのコレクションのままでしたので、 # 『For Each objSelect In objText.Options』の行でエラーになっていたハズです。 ## SELECTエレメント オブジェクトには、optionsプロパティがありますが、 ## エレメントコレクション オブジェクトには、optionsプロパティはありませんから。 それを踏まえて、元のソースで使われている「.options(i)」を生かすなら、 Set Opts = objSelect.options For i = 0 To opts.length - 1 If opts(i).value = "Test3" Then opts(i).selected = True Exit For End If Next という感じになります。 seletedIndexで処理するなら、 Set Opts = objSelect.options For i = 0 To opts.length - 1 If opts(i).value = "Test3" Then objSelect.selectedIndex = i Exit For End If Next となります。 For Each によるコードを生かすなら、 For Each objOption In objText.options If objOption.value = "Test3" Then objOption.selected = True Exit For End If Next と書きます。 --- ちなみに、MAKOTOさんが自己解決されたコードがうまくいくのは、 「objText.Item」が「objText(0)」と同義だからです。 # エレメントコレクションのItemプロパティは、引数指定が # 省略された場合、コレクションの先頭要素を返します。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.