Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA перебор ВСЕХ выделенных строк в Excel / 13 сообщений из 13, страница 1 из 1
03.05.2007, 18:41
    #34503298
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
Подскажите, пожалуйста, как реализовать следующий цикл.

Строка 1 (выделенная)
Строка 2 (выделенная)
Строка 3 (не выделенная)
Строка 4 (выделенная)
Строка 5 (не выделенная)

Нужно выполнить цикл только среди выделенных строк и на каждом шаге получить значения одной из ячеек.

Dim i As Integar, FirstSelectRow as Integer
FirstSelectRow = ActiveCell.Row

For i = FirstSelectRow To (последняя выделенная строка)
...
(получение значения выделенной строки с индексом i)
...
Next i

Не нашел ни одного примера.
Из того, что смог найти:
ActiveCell.Row - Даст мне первую выделенную строку (но только первую)
ActiveCell.Offset - Смещение, но относительно всех строк, а не только выделенных.

Помогите, пожалуйста.
Большое спасибо.
...
Рейтинг: 0 / 0
03.05.2007, 18:50
    #34503317
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
Код: plaintext
1.
2.
for each r in selection.rows
    debug.print r.cells( 1 , 1 ) 
next
...
Рейтинг: 0 / 0
03.05.2007, 19:15
    #34503367
VipFedor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
White Owl
Код: plaintext
1.
2.
for each r in selection.rows
    debug.print r.cells( 1 , 1 ) 
next


Большое спасибо. Все работат.
Казалось бы такой простой алгоритм, но с его поисками вчера я очень намучался и так ничего путнего и не нашел.
...
Рейтинг: 0 / 0
30.05.2007, 11:34
    #34560466
Dm'B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
ламерский вопрос по этой теме.
Цикл

for each r in selection.rows
debug.print r.cells(1,1)
next

выдает значения в том порядке в котором я выделяю строки, а не по порядку как идут строки, с этим можно что то сделать?
...
Рейтинг: 0 / 0
30.05.2007, 11:50
    #34560553
JaneDoe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
самое простое выделяй строки по порядку)
...
Рейтинг: 0 / 0
30.05.2007, 11:55
    #34560583
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
Загоните строки в массив и отсортируйте его
...
Рейтинг: 0 / 0
30.05.2007, 12:19
    #34560707
Dm'B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
JaneDoeсамое простое выделяй строки по порядку)
Выделять буду не я, пользователи, они навыделяют

big-dukeЗагоните строки в массив и отсортируйте его
Т.е. использовать тот же цикл и данные в массив набирать?
отсортировать по номеру строки? А как это сделать?
Мож кусочек кода подкинете?
...
Рейтинг: 0 / 0
30.05.2007, 12:51
    #34560836
Дадахан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
Dm'B JaneDoeсамое простое выделяй строки по порядку)
Выделять буду не я, пользователи, они навыделяют

big-dukeЗагоните строки в массив и отсортируйте его
Т.е. использовать тот же цикл и данные в массив набирать?
отсортировать по номеру строки? А как это сделать?
Мож кусочек кода подкинете?

из мира классики

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ReDim myrows(Selection.Areas.Count)
i =  0 
For Each MyRow In Selection.Rows
 myrows(i) = MyRow.Row
 i = i +  1 
Next MyRow

For i =  0  To Selection.Areas.Count -  1 
 If myrows(i) = Application.WorksheetFunction.Min(myrows) Then
    Debug.Print myrows(i) 'тут собственно можно rows(MyRows(i)).cells(1,1).value="Hello"
    myrows(i) = "Empty"
    i =  0 
 End If
Next
...
Рейтинг: 0 / 0
30.05.2007, 13:20
    #34560962
Дадахан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
Дадахан
из мира классики

Код: plaintext
1.
2.
3.
4.
5.
...
    Debug.Print myrows(i) 'тут собственно можно rows(MyRows(i)).cells(1,1).value="Hello"
    myrows(i) = "Empty"
    i =  0 
...

поспешил. тут нужно i=-1
...
Рейтинг: 0 / 0
30.05.2007, 16:30
    #34561899
Dm'B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
Э-э-э все таки не совсем понял. В этот if попадем только один раз.
Нашли минимальное значения номера строки. Вроде ж как все равно не упорядочили.
...
Рейтинг: 0 / 0
30.05.2007, 16:36
    #34561939
Дадахан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
Dm'B Вроде ж как все равно не упорядочили.
эт кто вам сказал?
...
Рейтинг: 0 / 0
30.05.2007, 16:39
    #34561954
JaneDoe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
один раз это если i=-1 не сделать
...
Рейтинг: 0 / 0
30.05.2007, 16:49
    #34562014
Dm'B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA перебор ВСЕХ выделенных строк в Excel
Все, разобрался, спасибо всем большое.

P.S. Стоило просто перезайти еще раз в файл, все заработало :))
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA перебор ВСЕХ выделенных строк в Excel / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]