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

Вход

Регистрация

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

 

= Мир MS Excel/Зациклить макрос - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Зациклить макрос (Макросы/Sub)
Зациклить макрос
footballplayer Дата: Пятница, 24.02.2017, 18:14 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

2013
Доброго дня!

Помогите, пожалуйста, зациклить выполнение макроса.

Написал небольшой макрос по поиску повторяющихся данных в книге:

[vba]
Код


Sub test()
 
 
Dim findcell As Variant
 
Set ws1 = ThisWorkbook.Worksheets("Лист1")
Set ws2 = ThisWorkbook.Worksheets("Лист2")
Set findcell = ws1.Range("A2")
 
 
 
With ws2.Range("A1:A500")
    Set c = .Find(findcell.Value, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do          
           b = c.Offset(0, 2).Value
 
           Select Case b
           Case "111"
                    findcell.Offset(0, 2).Value = b
            Case "222"
                   findcell.Offset(0, 3).Value = b
            Case "333"
                   findcell.Offset(0, 4).Value = b
            Case "444"
                   findcell.Offset(0, 5).Value = b
            Case "555"
                   findcell.Offset(0, 6).Value = b
            Case "666"
                   findcell.Offset(0, 8).Value = b
            Case "777"
                   findcell.Offset(0, 9).Value = b
            Case "888"
                   findcell.Offset(0, 10).Value = b
            Case "999"
                   findcell.Offset(0, 11).Value = b
            Case "101010"
                   findcell.Offset(0, 12).Value = b
            Case "111111"
                   findcell.Offset(0, 13).Value = b
            Case "121212"
                   findcell.Offset(0, 14).Value = b
                   End Select
       
            Set c = .FindNext(c)
            If c Is Nothing Then
                GoTo DoneFinding
            End If
            Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
DoneFinding:
End With
End Sub
[/vba]

Данный код работает с ячейкой "А2" листа "Лист1", которая определена в переменной [vba]
Код
findcell
[/vba]

Но на практике необходимо, чтобы скрипт работал с ячейками столбца "А" поочередно, т.е., чтобы скрипт применился к ячейке "А2", потом "А3",
"А4" и т.д.

Примерно понимаю, что тут необходимо применить цикл, но составленный мною цикл не работает(
Помогите, пожалуйста. Подскажите, куда необходимо смотреть, чтобы зациклить данный скрипт?)

Спасибо!
 
Ответить
СообщениеДоброго дня!

Помогите, пожалуйста, зациклить выполнение макроса.

Написал небольшой макрос по поиску повторяющихся данных в книге:

[vba]
Код


Sub test()
 
 
Dim findcell As Variant
 
Set ws1 = ThisWorkbook.Worksheets("Лист1")
Set ws2 = ThisWorkbook.Worksheets("Лист2")
Set findcell = ws1.Range("A2")
 
 
 
With ws2.Range("A1:A500")
    Set c = .Find(findcell.Value, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do          
           b = c.Offset(0, 2).Value
 
           Select Case b
           Case "111"
                    findcell.Offset(0, 2).Value = b
            Case "222"
                   findcell.Offset(0, 3).Value = b
            Case "333"
                   findcell.Offset(0, 4).Value = b
            Case "444"
                   findcell.Offset(0, 5).Value = b
            Case "555"
                   findcell.Offset(0, 6).Value = b
            Case "666"
                   findcell.Offset(0, 8).Value = b
            Case "777"
                   findcell.Offset(0, 9).Value = b
            Case "888"
                   findcell.Offset(0, 10).Value = b
            Case "999"
                   findcell.Offset(0, 11).Value = b
            Case "101010"
                   findcell.Offset(0, 12).Value = b
            Case "111111"
                   findcell.Offset(0, 13).Value = b
            Case "121212"
                   findcell.Offset(0, 14).Value = b
                   End Select
       
            Set c = .FindNext(c)
            If c Is Nothing Then
                GoTo DoneFinding
            End If
            Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
DoneFinding:
End With
End Sub
[/vba]

Данный код работает с ячейкой "А2" листа "Лист1", которая определена в переменной [vba]
Код
findcell
[/vba]

Но на практике необходимо, чтобы скрипт работал с ячейками столбца "А" поочередно, т.е., чтобы скрипт применился к ячейке "А2", потом "А3",
"А4" и т.д.

Примерно понимаю, что тут необходимо применить цикл, но составленный мною цикл не работает(
Помогите, пожалуйста. Подскажите, куда необходимо смотреть, чтобы зациклить данный скрипт?)

Спасибо!

Автор - footballplayer
Дата добавления - 24.02.2017 в 18:14
Pelena Дата: Пятница, 24.02.2017, 18:23 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19163
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Вместо[vba]
Код
Set findcell = ws1.Range("A2")
[/vba]напишите
[vba]
Код
For each findcell In ws1.Range("A2:A500")
[/vba]
диапазон свой, естественно, а после [vba]
Код
End With
[/vba]добавьте [vba]
Код
Next
[/vba]

И переменную опишите так
[vba]
Код
Dim findcell As Range
[/vba]
[p.s.]Не проверяла, ибо не на чем[/p.s.]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Вместо[vba]
Код
Set findcell = ws1.Range("A2")
[/vba]напишите
[vba]
Код
For each findcell In ws1.Range("A2:A500")
[/vba]
диапазон свой, естественно, а после [vba]
Код
End With
[/vba]добавьте [vba]
Код
Next
[/vba]

И переменную опишите так
[vba]
Код
Dim findcell As Range
[/vba]
[p.s.]Не проверяла, ибо не на чем[/p.s.]

Автор - Pelena
Дата добавления - 24.02.2017 в 18:23
footballplayer Дата: Воскресенье, 26.02.2017, 11:06 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

2013
Огромное спасибо! Все работает отлично!
 
Ответить
СообщениеОгромное спасибо! Все работает отлично!

Автор - footballplayer
Дата добавления - 26.02.2017 в 11:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Зациклить макрос (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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