Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
sysrepos
66 / 62 / 26
Регистрация: 08.08.2013
Сообщений: 373
Записей в блоге: 1
1

Индекс объекта из коллекции

15.01.2016, 10:56. Просмотров 2124. Ответов 5
Метки нет (Все метки)

Обратиться к объекту Paragraph через индекс коллекции, например Paragraphs(2).
А можно ли наоборот, можно ли как то узнать индекс объекта из коллекции?

например

Visual Basic
1
2
3
4
5
     Dim a As Paragraph
 
     For Each a In ThisDocument.Paragraphs
            'нужно узнать какой индекс имеет объект a    
     Next
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2016, 10:56
Ответы с готовыми решениями:

Индекс объекта колекции в Excel
Подскажите пожалуйста как определить индекс кнопки после вызова . Максимум что получается добратся...

Комбобокс и коллекции. Или коллекции комбобоксов
Ребят, изобразил пример, посмотрите пожалуйста ...там при двойном щелчке на, допустим "Профессия...

Как записать индекс коллекции?
Всем привет! Столкнулся с проблем при переборе коллекции. Из контроллера в представление отправляю...

Обратиться к элементам коллекции через индекс
Есть вектор типа Student. Пытаюсь обратится к элементам каждого студента, однако по индексу...

5
The_Prist
1312 / 291 / 65
Регистрация: 13.11.2008
Сообщений: 604
15.01.2016, 11:05 2
Чтобы это узнать, надо как-то понимать какой именно нужен. Т.е. нужно какое условие, а потом счетчик:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Dim a As Paragraph
Dim i as long
 
     For Each a In ThisDocument.Paragraphs
            'нужно узнать какой индекс имеет объект a
            i = i +1
            If a.Range.Text like "*искомый текст в параграфе*" then
                 msgbox "Нашли! Индекс параграфа: " & i,vbinformation
                 exit for
            end if
     Next
0
KoGG
5330 / 1396 / 330
Регистрация: 23.12.2010
Сообщений: 2,072
Записей в блоге: 1
15.01.2016, 11:15 3
Легче по-другому перебирать абзацы. I - номер абзаца.
Visual Basic
1
2
3
4
For i = 1 To ThisDocument.Paragraphs.Count
    Set a = ThisDocument.Paragraphs(i)
    ' . . .
Next
0
sysrepos
66 / 62 / 26
Регистрация: 08.08.2013
Сообщений: 373
Записей в блоге: 1
15.01.2016, 11:16  [ТС] 4
ну со счетчиком я бы тоже мог сделать.
Я думал есть какое то свойство специальное.
Может есть какое то свойство, которое позволяет определить, что это последний элемент в коллекции?

нужно вот для такого кода (код удаляет абзац, если в тексте идут 2 пустых абзаца подряд)

Visual Basic
1
2
3
4
5
6
     For Each a In ThisDocument.Paragraphs
        s = a.Range.Text
        If Asc(a.Range.Text) = 13 And Asc(a.Next.Range.Text) = 13 Then
            a.Range.Delete
        End If
     Next
но на последнем элементе естественно вылетает ошибка.
0
KoGG
5330 / 1396 / 330
Регистрация: 23.12.2010
Сообщений: 2,072
Записей в блоге: 1
15.01.2016, 12:03 5
Тогда перебирать ничего не надо:
Visual Basic
1
2
3
4
5
6
7
8
9
For i=1 to 10
  With ThisDocument.Range.Find
    .Text = "^p^p"
    .Replacement.Text = "^p"
    .Wrap = wdFindContinue
    .Format = False
    .Execute Replace:=wdReplaceAll
  End With
Next
For - на случай многократных пустых абзацев

Добавлено через 38 минут
Без лишних For
Visual Basic
1
2
3
4
5
6
7
8
With ThisDocument.Range.Find
    .Text = "(^13)@"
    .Replacement.Text = "^13"
    .Wrap = wdFindContinue
    .MatchWildcards = True
    .Format = False
    .Execute Replace:=wdReplaceAll
End With
0
The_Prist
1312 / 291 / 65
Регистрация: 13.11.2008
Сообщений: 604
15.01.2016, 12:23 6
Цитата Сообщение от sysrepos Посмотреть сообщение
ну со счетчиком я бы тоже мог сделать
Ну так и сделали бы и сказали, что это не подходит. Какой вопрос - такой ответ.
Вы вообще без цикла хотите все сделать? Или что? На последнем вылетает ошибка видимо потому, что он уже сместился, т.к. элемент перед ним был удален. Обычно в таких случаях делают цикл обратный:
Visual Basic
1
ThisDocument.Paragraphs.Count to 1 step -1
0
15.01.2016, 12:23
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2016, 12:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Получить индекс выделенного элемента коллекции ListView
не могу найти свойство, возвращающий индекс выделенного элемента коллекции ListView на заявленный...

Как прочитать индекс элемента коллекции Controls?
Народ, подскажите пожалуйста как прочитать индекс элемента, допустим CommandButton из коллекции...

Индекс первого и последнего элемента в коллекции с определенным классом
допустим я выбрал коллекцию элементов по id: var element = document.getElementById('posts') надо...

События объекта в коллекции
Подскажите пожалуйста как создать событие объекта? Пишу: Private WithEvents c As CommandButton...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.