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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2012, 03:37   #1
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию For Each Next

Уважаемые форумчане, здравствуйте!
Для поиска ячейки диапазона использую Управляющую инструкцию For Each Next. Но, для диапазона где присутствуют объедененные ячейки эта инструкция естественно не работает. Вопрос:
1. Возможно ли данную инструкцию заставить проверять ячейки диапазона с шагом через одну ячейку начиная с первой ячейки указанного диапазона?
2. Будет-ли выполнятся инструкцию For Each Next Если в прилагаемом вложении в коде цикла прописать вначале разобъединении ячейки, далее проверка на условие, объединение(разобъединенных) ячеек, переход к проверке следующей ячейки.(с заданным шагом)
Спасибо за внимание.
Вложения
Тип файла: rar Цикл Ф.rar (15.0 Кб, 10 просмотров)
Trimbl вне форума Ответить с цитированием
Старый 21.03.2012, 09:12   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Типа такого:
Код:
Sub ert()
Dim i As Long
With Range("C1:C" & Cells(Rows.Count, "A").End(xlUp).Row - 4)
    For i = 1 To .Count Step 2
        If IsEmpty(.Item(i)) Then
            Exit Sub
        Else
            .Item(i).MergeArea.ClearContents
        End If
    Next
End With
End Sub
nilem вне форума Ответить с цитированием
Старый 22.03.2012, 05:33   #3
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию

[QUOTE=nilem;1004668]Типа такого:

Уважаемый nilem, мои "глубокие " познания в области программирования не позволяют мне вредничать. Я не получил ответа на вопросы но зато, получил готовое решение. Код "Типа того" отлично работает, положительный результат, с Вашей помощью - получен. Премного благодарен.
Trimbl вне форума Ответить с цитированием
Старый 22.03.2012, 08:49   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

1. конструкция For Each .. Next изначально сделана для последовательного перебора всех элементов массива. Заставить её перескакивать через элементы не получится. Разве что так:
Код:
  For Each Rw In Columns(3).Rows
    If Not Rw.Cells(1, 1).MergeCells And IsEmpty(Rw.Cells(1, 1)) Then
      Exit For
    ElseIf Not IsEmpty(Rw.Cells(1, 1)) Then
       Cells(Rw.Row, 3).MergeArea.ClearContents
    End If
  Next Rw
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 22.03.2012 в 08:54.
DiemonStar вне форума Ответить с цитированием
Старый 22.03.2012, 10:31   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну можно исхитриться и перескочить
Код:
Sub tt()
    Dim cc As Range, i&
    For Each cc In [a1:a10]
        i = i + 1
        If i Mod 2 = 0 Then cc.Select
    Next
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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