Литература по "сложным" задачам в VBА?
Модератор: Naeel Maqsudov
Привет, всем! Посоветуйте, пж., какую-нибудь литературу с решениями "сложных" задач в VBA. В принципе, в основном меня интересует Excel. В тех книгах, которые просматривала, задачи только с известными фиксированными данными, а, например, случаи, когда расположение ячеек с нужными данными меняется не видела.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Не читал книг по VBA...
А какие проблемы?
Расположение ячеек обычно задается положением курсора.
Например: Ставим курсор на первую строку и запускаем макрос - макрос "пробегает" до конца таблицы
Тут хорошо объявить переменную типа Range, присвоить ей первую обрабатываемую ячейку, а затем все обращения к ячейкам записать относительно нее.
Еще частенько бывает нужно обработать ближайшую таблицу вокруг курсора
Как, к примеру, происходит когда мы ставим курсор в середину таблицы и вызываем
Данные/Сортировка, или что-нибудь другое.
Тут надо так:
set r = ActiveCell.CurrentRegion 'Это вся ближайшая таблица
r.rows(i) ' а это ее i-ая строка
r.columns(j) 'ну а это - j-ая колонка
См. следующие методы класса Range
.Range
.Offset
.Cells
.EntireRow .EntireColumn
.Rows .Columns
.Areas
.Start .End
.CurrentRegion
Когда изучите (справки по VBA вполне достаточно) все эти методы Ваш вопрос отпадет сам собой.
А какие проблемы?
Расположение ячеек обычно задается положением курсора.
Например: Ставим курсор на первую строку и запускаем макрос - макрос "пробегает" до конца таблицы
Тут хорошо объявить переменную типа Range, присвоить ей первую обрабатываемую ячейку, а затем все обращения к ячейкам записать относительно нее.
Код: Выделить всё
dim r as range
set r = activecell.entirecolumn.cells(1) ' Это будет первая ячейка (т.е. из
'колонки A) в той строке, где стоит курсот
r.range("A1") 'Это опять она же
r.range("B1") 'Это ее соседка слева
Как, к примеру, происходит когда мы ставим курсор в середину таблицы и вызываем
Данные/Сортировка, или что-нибудь другое.
Тут надо так:
set r = ActiveCell.CurrentRegion 'Это вся ближайшая таблица
r.rows(i) ' а это ее i-ая строка
r.columns(j) 'ну а это - j-ая колонка
См. следующие методы класса Range
.Range
.Offset
.Cells
.EntireRow .EntireColumn
.Rows .Columns
.Areas
.Start .End
.CurrentRegion
Когда изучите (справки по VBA вполне достаточно) все эти методы Ваш вопрос отпадет сам собой.