Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 529
от 15.05.2007, 00:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 262, Экспертов: 36
В номере:Вопросов: 1, Ответов: 2


Вопрос № 86103: Здравствуйте! У меня такая проблема. Есть таблица в Excel. Строки 5-14 -заполнены. 15-25- пустые. Когда становится данный лист активным, курсор должен находится в первой пустой строке таблицы. В таблицу будут постоянно вносится новые данные. Я пробов...

Вопрос № 86.103
Здравствуйте! У меня такая проблема. Есть таблица в Excel. Строки 5-14 -заполнены. 15-25- пустые. Когда становится данный лист активным, курсор должен находится в первой пустой строке таблицы. В таблицу будут постоянно вносится новые данные. Я пробовала двумя путями написать макрос, но в обоих случаях возникают ошибки.
1способ: Над таблицей в ячейке "B3" содержится формула, которая определяет номер первой пустой строки в моей таблице. Пробовала создать макрос, на переход в ячейку со следующим адресом: столбец = B, строка = значению в ячейке "B3". Не получается определить меняющийся адрес ячейки.
2способ: Задавала проверку ячеек, начиная с "B5" на содержимое. Если "не пусто", то переход на следующую строку. Если "пусто", то ничего не делать. Если писала макрос с оператором For ....Next, то при разовой проверки все получается. Т.е, если в макросе я задаю начало проверки с заполненной ячейки, то активной становится ячейка на следующей строке. Если задаю начальной ячейку на пустой строке, то переход на следующую строку не происходит.
Но как только я применяю оператор Do... Loop (разные варианты), то программа не останавливается на первой пустой ячейке, а "скачет" дальше. А так как ВСЕ строки под таблицей скрыты, то на последней строке Excel зависает.
Подскажите пожалуйста, как правильно написать макросы в обоих случаях. (С запуском макроса при активации листа проблем нет.) Заранее спасибо.
Отправлен: 09.05.2007, 03:20
Вопрос задала: Lanna (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Lanna!
Поупражняйтесь с приложенным кодом.
Удачи.
Евгений.

Приложение:

Ответ отправил: Тесленко Евгений Алексеевич (статус: 7-ой класс)
Ответ отправлен: 09.05.2007, 11:33

Отвечает: HookEst
Здравствуйте, Lanna!
Для поиска первой не пустой ячейки, без перебора всех ячеек, удобно использовать метод Range.End
Он находит границы региона , содержащего Range. Работает также как нажатие Ctrl+Стрелка.
Например если у Вас ячейки B5:B15 имеют значения, а B16 - нет, и Вы выделив ячейку B5 нажмете Ctrl+СтрелкаВниз, активной станет ячейка B15(т.е. самая нижняя ячейка из региона B5:B15, содержащая значение), остается только сместиться еще вниз на одну строку(можно использовать Offset) и мы получим искомую - первую пустую ячейку:


Private Sub Worksheet_Activate()
Range("B5").End(xlDown).Offset(1).Activate
End Sub


Можно наоборот, начинать с самой нижней пустой ячейки, например B25(заведомо пустая), нажав Ctrl+СтрелкаВверх, активной станет также B15 (т.е. первая от B25 снизу ячейка, содержащая значение)
или макросом:


Private Sub Worksheet_Activate()
Range("B25").End(xlUp).Offset(1).Activate
End Sub


Главное что-бы был заведомо определен порядок пустых и не пустых регионов.
Непонятно, как должен вести себя Ваш макрос когда все строки, вплоть до 25 будут заполнены, но всегда можно вставить дополнительную проверку.
Будут вопросы, пишите.
Успехов.
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 10.05.2007, 06:07


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное