Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2013, 21:14   #1
umka777_89
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 31
Печаль Как задать цикл по столбцам

Помогите, пожалуйста с решением задачи:
Есть таблица, как первая на рисунке, нужно для активной ячейки (выбрали,к примеру, строка1) пройтись по диапазонам E:H , I:L, M:P
и если в диапазоне E:H есть хоть одна заполненная ячейка, то вставляем ее значение в соответствующий столбец второй таблицы, если нет - ничего не делаем. и так по всем диапазонам надо пройти.
не могу додумать, как сделать, чтобы проверялась только активная строка.
Изображения
Тип файла: jpg пример.jpg (49.5 Кб, 163 просмотров)
umka777_89 вне форума Ответить с цитированием
Старый 01.06.2013, 21:48   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 906
По умолчанию

Код:
Sub Procedure_1()

    Dim myRow As Long
    Dim i As Long
    
    
    'Помещаем в переменную "myRow" номер
        'строки, где находится активная ячейка,
        'чтобы каждый раз не обращаться к ячейке
        '(может это ускорит работу кода).
    myRow = ActiveCell.Row
    
    
    For i = 5 To 8 Step 1
        'Если в ячейке что-то есть.
        If IsEmpty(Cells(myRow, i)) = False Then
        
            'Делаем действие.
            
            'Выходим из цикла, т.к. нам надо было только одно значение взять.
            Exit For
            
        End If
    Next i
    
    For i = 9 To 12 Step 1
        'Если в ячейке что-то есть.
        If IsEmpty(Cells(myRow, i)) = False Then
        
            'Делаем действие.
            
            'Выходим из цикла.
            Exit For
            
        End If
    Next i

    For i = 13 To 16 Step 1
        'Если в ячейке что-то есть.
        If IsEmpty(Cells(myRow, i)) = False Then
        
            'Делаем действие.
            
            'Выходим из цикла.
            Exit For
            
        End If
    Next i

End Sub
Скрипт вне форума Ответить с цитированием
Старый 01.06.2013, 21:52   #3
umka777_89
Пользователь
 
Регистрация: 26.02.2013
Сообщений: 31
По умолчанию

Скрипт, Спасибо) Думала, что как-то может можно без стольки циклов обойтись.
umka777_89 вне форума Ответить с цитированием
Старый 04.06.2013, 00:22   #4
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

вариант

Код:
Sub io()
    Dim Area As Range
    Dim Cell As Range
    
    For Each Area In Intersect(Range("E:H, I:L, M:P"), ActiveCell.EntireRow).Areas
        For Each Cell In Area.Cells
            If Not IsEmpty(Cell.Value) Then
                ' do something
            End If
            
            MsgBox Cell.Address
        Next
    Next
End Sub
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не получается задать цикл brutalis Общие вопросы Delphi 0 15.12.2011 20:20
Как правильно задать цикл? BingoBongo Общие вопросы Delphi 12 07.05.2011 09:09
Как организовать цикл по столбцам? TheLadyLida Microsoft Office Excel 3 12.04.2010 16:41
Цикл по столбцам niqx Microsoft Office Excel 18 11.10.2008 07:39
Задать цикл Dagir БД в Delphi 1 01.09.2008 11:08