Ваша ошибка, вероятно, происходит, потому что вы предполагаете, что все 8 возможностей существуют в коде выше.
Вы можете изменить l oop и использовать селектор атрибута = значение css, начинающийся с оператора, для нацеливания только на существующие значения. Поскольку значения находятся в диапазоне от 1 до 8, и мы можем видеть, что ожидаемые значения действительно одинарные: di git от html (ng-pattern="/\d{1}$/"
), мы можем присвоить значение справа на основе левой стороны name
значение атрибута:
Dim i As Long
For i = 0 To ie.document.querySelectorAll("[name^='secNumber']").Length - 1
ie.document.querySelectorAll("[name^='secNumber']").item(i).value = Right$(ie.document.querySelectorAll("[name^='secNumber']").item(i).getAttribute("name") , 1)
Next
Если вместо этого вы будете работать с переменными, вы получите небольшую эффективность:
Dim i As Long, secNumberNodeList As Object, secNumberNode as Object
Set secNumberNodeList = ie.document.querySelectorAll("[name^='secNumber']")
For i = 0 To secNumberNodeList.Length - 1
Set secNumberNode = secNumberNodeList.item(i)
secNumberNode.value = Right$(secNumberNode.name , 1)
Next
Обратите внимание, что значения атрибутов чувствительны к регистру, поэтому вам нужно s в secNumber
. Вы можете игнорировать регистр (для символов в диапазоне ASCII) с модификатором i .