2016-07-01 7 views
0

最初のチェックボックスをオンにしたいのですが、VBAのコードが機能しません。VBA/IE同じ名前と異なる値のチェックボックスをチェックしてください

<input type="Checkbox" name="report_filters_product" value="2340"> 
<input type="Checkbox" name="report_filters_product" value="1338"> 
<input type="Checkbox" name="report_filters_product" value="2998"> 
<input type="Checkbox" name="report_filters_product" value="8007"> 

最初のチェックボックスをチェックするために私のコードは次のとおりです。

Set Element = objIE.document.getElementsByName("report_filters_product").Value = 2340  
Element.Checked = True 

しかし、これは動作しません。何がうまくいかないでしょうか?

+0

私が間違っていない場合(これはJavaScriptと同じように動作すると仮定しています)、VBAコードの最初の行の開始点は問題を壊しています。その行を 'Set Element = document.getElementsByName(" report_filters_product ")。Value = 2340 'に変更してください(動作しない場合は教えてください) – Joeytje50

+0

これは誤植ではありません。私の「With objIE」が開いています。 –

+0

F12を押して[Console]タブを選択するとどうなるでしょうか?それはエラーを(赤いテキストで)表示しますか? – Joeytje50

答えて

0

チャットの会話の後、私はこのコードで何がうまくいかないことに気付きました。最初のコード行では、基本的にすべての要素の配列をname="report_filters_product"で選択しています。 の最初のチェックボックスをオンにする場合は、最初に要素の最初のものを選択するように指定する必要があります。

Set Element = objIE.document.getElementsByName("report_filters_product"); 
Element[0].Checked = True; 

キー部分のみチェックボックスの最初を選択するようにスクリプトに指示[0]、次のとおりです。これは以下のように行うことができます。


このコードでは、チェックボックスの値を選択するのではなく、チェックボックスのインデックスを選択します。チェックボックスの値を選択する場合、最も簡単な解決策は、各チェックボックスに一意のid属性を指定してからそれを選択することです。このような解決策は次のようになります。

<input type="Checkbox" name="report_filters_product" value="2340" id="report_2340"> 
<input type="Checkbox" name="report_filters_product" value="1338" id="report_1338"> 
<input type="Checkbox" name="report_filters_product" value="2998" id="report_2998"> 
<input type="Checkbox" name="report_filters_product" value="8007" id="report_8007"> 

次のようにスクリプトは、その後IDで項目を選択すると:

Set Element = objIE.document.getElementById("report_2340"); 
Element.Checked = True; 

注意をこの場合には、あなたはがあるため、[0]を必要としないことgetElementById常には単一の要素を返します(idは文書内の一意の識別子です)。

+0

ありがとう、パーフェクト! VBA '(0)' –

+0

私は 'getElementsById'を使うべきですか?各チェックボックスに一意の' id'を付けるには? –

+0

私は答えに余分な部分を加えました。あなたは、(私の答えの最初の部分で)要素を選択するには '(0)'が必要だと言っていましたか?もしそうなら、それに従って私の答えを修正します。 – Joeytje50

関連する問題