Пятница, 26.04.2024, 16:16
Все о программировании в MS Office
Приветствую Вас Гость | RSS
Главная Справочник VBA Регистрация Вход

ВНИМАНИЕ!!!

сайт переехал на новый домен

 

VBA-HELP.RU

Меню сайта

Категории
Общие материалы [6]

Друзья сайта
  • Инструкции для uCoz

  • Реклама

    Главная » Справочник VBA » Модули полезных примеров » Общие материалы

    Организация циклов по списку данных в электронной таблице Excel
           Для выполнения цикла по списку данных в электронной таблице существует несколько способов которые зависят от поставленных задач:
    • цикл по списку содержащему известное, постоянное количество строк,
    • цикл по динамическому списку или списку с неизвестным количеством строк,
    • цикл по списку, содержащий конкретную запись.
     
    В следующих примерах кода предполагается, что строка заголовка списка начинается в ячейке A1, а данные начинаются в ячейке A2.
     

    Поиск в списке с постоянным известным количеством строк

    Этот код перемещает столбец A в конец списка:
     
    Sub Test1()
          Dim x As Integer
          ' numrows := чисто строк данных.
          NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
          ' Выбор ячейки a1.
          Range("A2").Select
          ' Организация цикла "For" с числом повторений "numrows".
          For x = 1 To NumRows
             ' Вставьте код сюда.
             ' Выбор ячейки на 1 строку ниже активной.
             ActiveCell.Offset(1, 0).Select
          Next
       End Sub
     

    Поиск в динамическом списке или списке с неизвестным количеством строк

    Этот код перемещает столбец A в конец списка. (Предполагается, что каждая ячейка в столбце А содержит записи до конца.)
     
    Sub Test2()
          ' Выбор ячейки A2, *первой строки данных*.
          Range("A2").Select
          ' Организация цикла Do до первой пустой ячейки.
          Do Until IsEmpty(ActiveCell)
             ' Вставьте код сюда.
             ' Перемещение на 1 строку ниже текущего местонахождения.
             ActiveCell.Offset(1, 0).Select
          Loop
       End Sub
    Примечание: Если в данных столбца А попадаются пустые ячейки, измените код с учетом этого обстоятельства. Убедитесь, что пустые ячейки расположены на постоянном удалении друг от друга. Например, если каждая вторая ячейка в столбце А пуста (например, эта ситуация может возникать в том случае, когда каждая "запись" использует две строки, причем вторая строка имеет отступ в одну ячейку), код можно изменить следующим образом:
     
    ' Организация цикла Do до первых двух последоветельных ячеек.
          Do Until IsEmpty(ActiveCell) and IsEmpty(ActiveCell.Offset(1, 0))
             ' Вставьте код сюда.
             '
             ' Перемещение на 2 строки ниже текущего местонахождения.
             ActiveCell.Offset(2, 0).Select
          Loop

    Поиск конкретной записи в списке

    Этот код перемещает столбец A в конец списка:
     
    Sub Test3()
          Dim x As String
          Dim found As Boolean
          ' Выбор первой строки данных.
          Range("A2").Select
          ' Установка значения для переменной поиска.
          x = "test"
          ' Установка значения "ложь" для логической переменной "found".
          found = False
          ' Организация цикла Do до первой пустой ячейки.
          Do Until IsEmpty(ActiveCell)
             ' Проверка активной ячейки на совпадение с переменной поиска.
             If ActiveCell.Value = x Then
                found = TRUE
                Exit Do
             End If
             ' Перемещение на 1 строку ниже текущего местонахождения.
             ActiveCell.Offset(1, 0).Select
          Loop
       ' Каково состояние переменной found?
          If found = True Then
             Msgbox "Значение найдено в ячейке " & ActiveCell.Address
          Else
             Msgbox "Значение не найдено"
          End If
       End Sub
     
     
    Источник: Сайт технической поддержки Майкрософт
    Категория: Общие материалы | Добавил: Админ (23.07.2009)
    Просмотров: 3526 | Комментарии: 1
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Форма входа

    Новое в Спр.VBА
    Внимание: Если вы не нашли необходимую Вам информацию
    Вы можете оставить запрос на дополнение Справочника VBA в ФОРУМЕ
    Обновления в Справочнике VBA
    [27.08.2009] - Choose
    [27.08.2009] - Switch
    [27.08.2009] - IIF
    [27.08.2009] - If...Then...Else
    [24.08.2009] - MultiPage

    Поиск

    Наш опрос
    Что вы будете делать, если VBA не будет поддерживаться в новом Office ?
    Всего ответов: 58

    Copyright MyCorp © 2024 Яндекс цитирования Rambler's Top100   Каталог сайтов Рейтинг@Mail.ru Проверка ТИЦ