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

Вход

Регистрация

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

 

= Мир MS Excel/Бесконечный цикл - Мир MS Excel

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

Добрый вечер. Подскажите пожалуйста где ошибка? Либо уходит в бесконечный цикл либо выходит ошибка.

Что надо получить: В столбце "С:С" есть данные, н/р "С1:С10" все ячейки заполнены. В "С11" пустая ячейка. Надо выделить "С1:С10"

Спасибо!

Макрос взят на этом сайте и чуть переделан.

[vba]
Код
Dim a1 As String ' верхний адрес

Dim a2 As String ' нижний адрес

Dim ran As Range ' в диапазоне

If (PN.Range("C1").Value = "") Then ' если верхняя пустая

ActiveCell.Offset(1, 0).Select  ' пойти в низ

a1 = ActiveCell.Address ' взять адрес ячейки

End If

For x = 1 To (ActiveCell.Row + 1) ' будем опускатся

ActiveCell.Offset(1, 3).Select ' на одну вниз

ActiveCell.Offset(1, 3).Select ' на одну вниз

If (ActiveCell.Value) = "" Then ' если пустая

ActiveCell.Offset(-1, 3).Select ' на одну вверх

a2 = ActiveCell.Address ' получаем адрес нижней

End If

Next
     
Set ran = Range(a1 + ":" + a2) ' строим диапазон

ran.Select ' выбеляем
[/vba]


"И все таки она вертится!"
 
Ответить
СообщениеДобрый вечер. Подскажите пожалуйста где ошибка? Либо уходит в бесконечный цикл либо выходит ошибка.

Что надо получить: В столбце "С:С" есть данные, н/р "С1:С10" все ячейки заполнены. В "С11" пустая ячейка. Надо выделить "С1:С10"

Спасибо!

Макрос взят на этом сайте и чуть переделан.

[vba]
Код
Dim a1 As String ' верхний адрес

Dim a2 As String ' нижний адрес

Dim ran As Range ' в диапазоне

If (PN.Range("C1").Value = "") Then ' если верхняя пустая

ActiveCell.Offset(1, 0).Select  ' пойти в низ

a1 = ActiveCell.Address ' взять адрес ячейки

End If

For x = 1 To (ActiveCell.Row + 1) ' будем опускатся

ActiveCell.Offset(1, 3).Select ' на одну вниз

ActiveCell.Offset(1, 3).Select ' на одну вниз

If (ActiveCell.Value) = "" Then ' если пустая

ActiveCell.Offset(-1, 3).Select ' на одну вверх

a2 = ActiveCell.Address ' получаем адрес нижней

End If

Next
     
Set ran = Range(a1 + ":" + a2) ' строим диапазон

ran.Select ' выбеляем
[/vba]

Автор - Kinder
Дата добавления - 08.12.2013 в 18:01
doober Дата: Воскресенье, 08.12.2013, 18:23 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
А если так?
[vba]
Код
LastRow1 = PN.Cells(PN.Rows.Count, 3).SpecialCells(xlCellTypeConstants).Row
LastRow2 = PN.Cells(PN.Rows.Count, 3).End(xlUp).Row
PN.Range("C" & LastRow1 & ":C" & LastRow2).Select
[/vba]

Цитата
Бесконечный цикл

Вспомнил муху и слона




Сообщение отредактировал doober - Воскресенье, 08.12.2013, 18:25
 
Ответить
СообщениеА если так?
[vba]
Код
LastRow1 = PN.Cells(PN.Rows.Count, 3).SpecialCells(xlCellTypeConstants).Row
LastRow2 = PN.Cells(PN.Rows.Count, 3).End(xlUp).Row
PN.Range("C" & LastRow1 & ":C" & LastRow2).Select
[/vba]

Цитата
Бесконечный цикл

Вспомнил муху и слона

Автор - doober
Дата добавления - 08.12.2013 в 18:23
Kinder Дата: Воскресенье, 08.12.2013, 18:52 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 0 ±
Замечаний: 0% ±

Спасибо за ответ!!! Попытался запустить и ничего не произошло.
Может надо LastRow1 LastRow2 объявить как String?


"И все таки она вертится!"
 
Ответить
СообщениеСпасибо за ответ!!! Попытался запустить и ничего не произошло.
Может надо LastRow1 LastRow2 объявить как String?

Автор - Kinder
Дата добавления - 08.12.2013 в 18:52
Kinder Дата: Воскресенье, 08.12.2013, 18:59 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 77
Репутация: 0 ±
Замечаний: 0% ±

Я извиняюсь. Работает! Только я не правильно объяснил((. После пустой ячейки "А11" есть не пустые ячейки. Ваш вариант выделяет все вплоть до последеней. То есть "А1:А80" А надо чтобы до 1-й пустой.
Спасибо!


"И все таки она вертится!"
 
Ответить
СообщениеЯ извиняюсь. Работает! Только я не правильно объяснил((. После пустой ячейки "А11" есть не пустые ячейки. Ваш вариант выделяет все вплоть до последеней. То есть "А1:А80" А надо чтобы до 1-й пустой.
Спасибо!

Автор - Kinder
Дата добавления - 08.12.2013 в 18:59
Wasilich Дата: Воскресенье, 08.12.2013, 21:28 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
В столбце "С:С" есть данные, н/р "С1:С10" все ячейки заполнены. В "С11" пустая ячейка. Надо выделить "С1:С10"

После пустой ячейки "А11" есть не пустые ячейки.
Что то не понятно, все таки в С или в А?
И в чем загвоздка? Что конкретно нужно? Просто найти пустую ячейку начиная с С1 и выделить диапазон С1:С10? Или есть еще какие то условия. Поконкретнее выражовуйтесь. :)
 
Ответить
Сообщение
В столбце "С:С" есть данные, н/р "С1:С10" все ячейки заполнены. В "С11" пустая ячейка. Надо выделить "С1:С10"

После пустой ячейки "А11" есть не пустые ячейки.
Что то не понятно, все таки в С или в А?
И в чем загвоздка? Что конкретно нужно? Просто найти пустую ячейку начиная с С1 и выделить диапазон С1:С10? Или есть еще какие то условия. Поконкретнее выражовуйтесь. :)

Автор - Wasilich
Дата добавления - 08.12.2013 в 21:28
doober Дата: Воскресенье, 08.12.2013, 21:47 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Последний подход к штанге.
[vba]
Код
Dim X As Range
For Each X In PN.Cells(PN.Rows.Count, 3).SpecialCells(xlCellTypeConstants).Areas
MsgBox X.Address
Next
[/vba]


 
Ответить
СообщениеПоследний подход к штанге.
[vba]
Код
Dim X As Range
For Each X In PN.Cells(PN.Rows.Count, 3).SpecialCells(xlCellTypeConstants).Areas
MsgBox X.Address
Next
[/vba]

Автор - doober
Дата добавления - 08.12.2013 в 21:47
alex77755 Дата: Понедельник, 09.12.2013, 01:20 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

[vba]
Код
Range("A1:A" & Range("A1").End(xlDown)).Select
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщение[vba]
Код
Range("A1:A" & Range("A1").End(xlDown)).Select
[/vba]

Автор - alex77755
Дата добавления - 09.12.2013 в 01:20
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Бесконечный цикл (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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