2016-05-31 3 views
0
として変数

は、私が得続けるVBA - オブジェクト変数またはブロック変数が設定されていません。次のコードの行<code>If document.getElementsByClassName("prod-summ")(tdNum).getElementById("no-piece").FirstChild.NodeValue = ItemNbr Then</code>上:「オブジェクト変数またはWithブロック変数が設定されていないエラー 『91』ランタイムを」:整数

Dim tdNum As Integer 
Dim ItemNbr As String 

    'More code here 

tdNum = 0 
    If document.getElementsByClassName("prod-summ")(tdNum).getElementById("no-piece").FirstChild.NodeValue = ItemNbr Then 
     Cells(cell, 2).Value = document.getElementsByClassName("prod-summ")(tdNum).getElementById("col-action").getElementsByTagName("span")(0).innerText 
    Else 
     tdNum = tdNum + 1 
    End If 

私の周りに検索したことができますが、私のコードでは意味をなさない解決策が見つかるようです。

+0

これらの問題を解決する一般的な方法として、その行にブレークポイントを設定します。次に、イミディエイトウィンドウを使用して、メソッド/プロパティのチェーンのどこで問題が発生しているかを調べます(例えば、 'document'はオブジェクトに設定されていますか?' getElementsByClassName( '何かを返しますか?)) – aucuparia

+0

get2leadByClassName "(prod-summ") '(' 'prod-summ '')(tdNum)' ' – Tim

+0

' '(prod-summ") ''がClassNameであり、 '(tdNum)'が数値である変数であるため、最初のインスタンスは 'getElementsByClassNameクラス "prod-summ"を持つ要素の最初のインスタンスを対象とする "prod-summ")(0) – ActuallyJane

答えて

0

私は私の問題を解決しました。まず、タイプミスがありました。むしろgetElementsByClassName("prod-summ")よりも、それはgetElementsByClassName("prod-somm")

されている必要がありますそして、私は、オブジェクト階層がとても以下に私のコードを交換することにより、documentを除いて何も後getElementByIdを持っ好きではないと思います。

For tdNum = 0 To 10 

    If document.getElementsByClassName("prod-somm-texte")(tdNum).FirstChild.FirstChild.NodeValue = ItemNbr Then 
     Cells(cell, 2).Value = document.getElementsByClassName("prix")(tdNum).FirstChild.innerText 
     Exit For 
    Else 
     Debug.Print document.getElementsByClassName("prod-somm-texte")(tdNum).FirstChild.FirstChild.NodeValue 
    End If 

Next tdNum 

そして、それは、ように見えましたそれを解決する。

あなたのご意見はありがとうございます。本当に助かりました。

関連する問題