Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Статьи об Excel

МЕНЮ САЙТА
  • 1
  • 2
  • 3

КАТЕГОРИИ РАЗДЕЛА
Циклы [4]
Циклы VBA
Операторы ветвления [2]
Модули классов [2]
Создание, поля, свойства, события, когда использовать
Работа с приложениями и библиотеками [2]
Создание надстроек для ексель на .net, вызов компонентов .net
Прикладное программирование [3]
Примеры разработки прикладных программ на VBA

ОПРОСЫ
Какой версией Excel Вы пользуетесь?
Всего ответов: 56882
Главная » Статьи » Программирование на VBA » Циклы

Цикл For Each…Next
     У цикла For Each…Next нет счетчика как в цикле For…Next. Цикл выполняется фиксированное кол-во раз, соответствующее количеству элементов в массиве.

Цикл For Each…Next имеет следующий синтаксис:

For Each x In Array


//операторы//

Next [x]


x
– это переменная, которая перебирает все элементы в группе или массиве (в нашем случае это Array)

Array
– это массив или коллекция

Пример №1:
В нижеуказанном примере элемент x объявляется как Лист (Worksheet) и с помощью цикла по всем листам данной книги (ThisWorkbook.Worksheets), в ячейке А1 проставляется имя соответствующего листа.

Sub example1 ()
Dim x As Worksheet
For Each x In ThisWorkbook.Worksheets
x.Range("A1").Value = x.Name
Next x
End Sub 
Пример №2:
В следующем примере x объявляется как ячейка/диапазон (Range) и с помощью цикла и простого оператора ветвления If..Then..Else перебираются все заполненные ячейки на активном листе, и если ячейка со значением «1» найдена – она заливается красным цветом.

Sub example2 ()
Dim x As Range
For Each x In ActiveSheet.UsedRange.Cells
If x.Value = 1 Then
x.Interior.ColorIndex = 3
End If
Next x
End Sub 
Пример№3:
В данном примере x объявляется как Лист (Worksheet) и с помощью цикла все листы данной книги (ThisWorkbook.Worksheets) переименовываются на Sheet плюс случайное число.
Sub example3 ()
Dim x As Worksheet
 For Each x In ThisWorkbook.Worksheets
x.Name = "Sheet" & Round(Rnd * 1000)
Next x
End Sub 
Категория: Циклы | Добавил: LightZ (01.04.2012)
Просмотров: 27709 | Комментарии: 6 | Теги: ВБА, циклы vba, Цикл For Each…Next, Next, For Each | Рейтинг: 5.0/6


Всего комментариев: 6
0   Спам
1    ratboy   (01.04.2012 23:01) [ Материал]
   Не указано как объявлять переменную для прохода по массиву

0   Спам
2    LightZ   (02.04.2012 21:40) [ Материал]
   а для "введение в VBA" по твоему нужно писать про массивы? думаю очень тяжело будет понять начинающему

+1   Спам
3    Серго   (07.04.2012 12:38) [ Материал]
   Спасибо!
Просто и понятно!
Гораздо доступнее чем в книгах!

0   Спам
4    abookzzjups   (05.04.2017 14:36) [ Материал]
   Удалено. Причина:Спам

0   Спам
5    Мурад   (14.01.2023 19:43) [ Материал]
   Добрый день!
А если имеется массив A1:K10, то как перебирать элементы по строкам?
A1:K1, A2:K2, ..., A10:K10? чтобы для каждого элемента можно было выполнить действие, например, объединения ячеек?

0  
6    Serge_007   (16.01.2023 10:55) [ Материал]
   Sub example2 ()
Dim x As Range
For Each x In Range ("A1:K10")
...что надо сделать...
Next x
End Sub

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!