русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Макросы занятие 6. Объекты и их свойства.


Дата добавления: 2015-07-23; просмотров: 1058; Нарушение авторских прав


Работа с ячейками эл.таблицы при произвольном количестве данных.

В макросе прописанном макрорекодером по вставке формул на лист рейсы, есть недостаток – жестко закрепленный диапазон области вставки (от 2 до 50).

Проанализируем объекты, входящие в этот макрос. Прежде всего ActiveCell – активная ячейка. Если набрать его в новой строке и поставить точку, появится всплывающий список свойств и методов (действий), присущий данному объекту.

Среди прочих бросается в глаза свойство Address. Если присвоить переменной значение ActiveCell.Address, например tx= ActiveCell.Address, поставить точку останова на команде следующей за данной инструкцией то, наведя курсор на tx после запуска макроса увидим “$A$1” (выделена ячейка А1). Поскольку мы уже освоили оператор Mid,вырезать текстовое значение номера строки не представляет труда.

Но есть другая проблема – определить, где заканчивается список значений в таблице. Здесь ход рассуждений тоже вполне естественен. Использование служебных клавиш Shift, Ctrl, Alt приводит к исполнению каких либо функций. Даже не обращаясь к справочной системе можем попробовать их действие. Основная клавиша Ctrl. Нажатие <Ctrl>+<End> приводит курсор в конечную область данных вниз+вправо. Нажатие <Ctrl>+<¯> в последнюю непустую ячейку данной колонки. У первой клав. комбинации есть недостаток – перемещение может произойти в область прежде редактируемых, но ныне пустых ячеек. Вывод – будем определять диапазон значений по самой заполненной колонке (в каждой ячейке – значение), используя <Ctrl>+<¯> для перемещения на последнюю ячейку и определение ее адреса. После записи действий получим «волшебную» комбинацию:

Range(“A1”).Select

Selection.End(xlDown).Select

 

Окончательный вариант будет таким:

Sub formuls()



Sheets("Рейсы").Select

Range(“A1”).Select

Selection.End(xlDown).Select

tx= ActiveCell.Address

tx=Mid(tx,4)

Range("G2").Select

ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"

Selection.Copy

Range("G3:G"+tx).Select

ActiveSheet.Paste

Application.CutCopyMode = False

Range("C2").Select

ActiveCell.FormulaR1C1 = "=MONTH(RC[1])"

Selection.AutoFill Destination:=Range("C2:C"+tx), Type:=xlFillDefault

Range("C2:C"+tx).Select

Range("A1").Select

End Sub

При использовании свойства Value (содержимое) объекта Range можно сократить текст макроса до нескольких строк. Дело в том, что макрорекодер не оптимизирует текст программы, а просто фиксирует программными кодами все ваши действия.

Результатом осмысленного использования упомянутых свойств известного объекта будет лаконичный программный код.

Sub formuls()



Sheets("Рейсы").Select

Range(“A1”).Select

Selection.End(xlDown).Select

tx= ActiveCell.Address

tx=Mid(tx,4)

Range("G2:G"+tx).Value="=RC[-2]*RC[-1]"

Range("C2:C"+tx).Value = "=MONTH(RC[1])"

Range("A1").Select

End Sub

Для закрепления использования данного открытия освоим еще одну задачу. Попутно разберемся с еще одним свойством активной ячейки. Зачем нам в текстовом виде номер последней заполненной строки, если можно поискать соответствующее свойство активной ячейки. Это свойства Row и Column. Они соответственно возвращают номер строки и колонки в виде целых чисел. Это удобнее в большинстве случаев. Кроме того, для обращения к конкретной ячейке удобнее воспользоваться объектом Cells(ном_строки, ном_колонки).

Пример. Пусть имеется произвольный набор цифр в колонке А. Требуется определить произведение цифр в нечетных строках и сумму цифр в четных строках.

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

Sub чет_нечет()

Range(“A1”).Select

Selection.End(xlDown).Select

proiz=1

nomst= ActiveCell.Row

for i=1 to nomst step 2

proiz=proiz*Cells(i,1)

ssum=ssum+ Cells(i+1,1)

Next I

Cells(1,2)= proiz

Cells(1,3)= ssum

 

End Sub

 



<== предыдущая лекция | следующая лекция ==>
Пояснения. | Макросы занятие 7. Монопольные окна диалога.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.515 сек.