Я создаю консоль, которая находит блоки с определенным значением атрибута и заменяет его другим (аналогично поиску (текстовое поле1) и замене (текстовое поле2) в Word).
For Each blk In ss
If (blk.HasAttributes) Then
attr = blk.GetAttributes()
For i = 0 To UBound(attr)
If attr(i).TagString = "item" And _
attr(i).TextString = TextBox1.Value Then
attr(i).TextString = TextBox2.Value
Exit For
End If
Next
End If
Next
Хотя я решил это, возникла новая проблема. Мои коллеги теперь хотят фильтровать по 2 атрибутам. Например, атрибут с тегом «предмет» может иметь значение «кола». Но вы можете изменить только название блоков, содержащих газировку, а не лекарство. Таким образом, я выбрал еще один атрибут, который их различает (textbox11).
For Each blk In ss
If (blk.HasAttributes) Then
attr = blk.GetAttributes()
For i = 0 To UBound(attr)
If attr(i).TagString = "origin" And attr(i).TextString = TextBox11.Value Then
attr = 0
attr = blk.GetAttributes()
For o = 0 To UBound(attr)
If attr(i).TagString = "item" And _
attr(i).TextString = TextBox1.Value Then
attr(i).TextString = TextBox2.Value
Exit For
End If
End If
Next
End If
Next
Но это не работает. Как бы вы подошли к проблеме?
End If
дважды на одном и том же уровне отступа ;-) - person Mathieu Guindon   schedule 21.11.2019