46550 (665587), страница 2

Файл №665587 46550 (Access і Visual basic for Application. Excel VBA: прийоми програмування) 2 страница46550 (665587) страница 22016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Виклик процедури, що має аргументи, повинен супроводжуватися завданням значень для всіх оголошених аргументів. Ці значення перераховуються в тому ж порядку, що і аргументи при оголошенні і розділяються комами. У призначених для користувача функціях або модулях як аргументи можуть застосовуватися вирази.


5. Основні оператори VBA

5.1. Змінні і оператор привласнення

Змінні використовуються для збереження значень величин, що змінюються в процесі виконання програми. Кожна змінна має ім'я по якому до неї звертаються. Правила привласнення імен аналогічно правилу привласнення імен для полів. Привласнення значення для змінної здійснюється за допомогою оператора привласнення. У лівій частині оператора привласнення ім'я змінної, а в правій - значення або вираз.

Змінні можуть створюватися автоматично, у міру появи в процедурі (неявне оголошення). За умовчанням неявно оголошені змінні мають тип Variant. Усередині такої змінної окрім значення зберігається індикатор типу значення.

Неявне оголошення типу допустиме тільки у разі відсутності оператора Option Explicit в області опису модуля. Щоб при створенні нового модуля запобігти появі цього оператора в області опису, слід відключити опцію явний опис змінних на вкладці Модуль діалогового вікна Параметри.

Рекомендується описувати всі змінні явно, це дозволить уникнути помилок, пов'язаних з перетворенням типів даних. Явний опис типу проводиться оператором Dim, після якого указується ім'я змінної і її тип. Якщо при явному оголошенні змінній не вказаний тип даних, а задано тільки ім'я змінної те буде створене змінна типа Variant, якою можна привласнювати ланцюжки символів, числа з плаваючою крапкою, значення дати і часу. ACCESS 97 однозначно ідентифікує привласнюванні значення, оскільки разом з ними він зберігає в змінній і ознака типу.

У ACCESS використовуються наступні типи даних:

Тип даних. Значення, що зберігаються. Область значень

Boolean Логічна величина True або False

Byte Ціле позитивне число Від 0 до 255

Integer Ціле число Від - 32768 до 32768

Long Ціле число подвійної довжини Від - 2147483648 до 2147483648

Single Число з плаваючою крапкою Від - 3,402823Е38 до - 1,401298Е-45 і від 1,401298Е-45 до 3,402823Е38

Double Число з плаваючою точкою подвійної точності Від - 1,79769313486232Е308 до - 4,94065645841247Е-32 і від 4,94065645841247Е-324 до 1,79769313486232Е308

Currency Число з фіксованою крапкою (використовується для проведення грошових розрахунків) Від - 922337203685477,5808 до 922337203685477,5807

Rate Дата Від 1 січня 100 року до 31 грудня 9999 року

String (фіксованої довжини) Рядкове значення Довжина від 1 до 65536

String (змінної довжини) Рядкове значення Довжина від 0 до 2147483648

Для оголошення декілька змінних можна користуватися одним оператором Dim, перераховуючи їх через кому.

При оголошенні змінній слід пам'ятати про область дії. Змінні оголошені в процедурі, можна використовувати тільки усередині цієї процедури. Якщо змінна повинна бути доступна у всіх процедурах одного модуля, її необхідно оголосити в області опису модуля.

Тут також можна застосовувати оператора Dim. Найбільшу область дії має змінна, оголошена глобальною (з префіксом Global) в області опису модуля. Синтаксис оператора Global не відрізняється від синтаксису оператора Dim.

На відміну від змінній, константа містить фіксоване значення, яке не може бути змінене в процесі виконання програми. Згідно правилам хорошого тону, константи, як і змінні, слід оголошувати явно, указуючи їх імена і значення.

Для оголошення константи використовується оператор Const. Оголошену константу можна використовувати в програмі, звертаючись до неї по імені. Наприклад:Const Число_Пи = 3.1415926


5.2. Умовні оператори

У мові VBA, як і в інших мовах програмування, основними елементами, керівниками ходом виконання процедури, є умовні оператори. Найбільш простій з них - оператор If... Then:

If Поліна = "Ж" Then

Поздоровлення = "З 8 березня!"

End if

Якщо умова, задана виразом між ключовими словами If і Then виконується, дотримуються інструкції усередині блоку, обмеженого ключовими словами Then і End if. Інакше оператори між ключовими словами не виконуються, а ACCESS перейде до обробки оператора, який слідує за ключовими слова End if. У разі потреби провести дві різні дії (одне при дотриманні умови, а друге - ні), доцільно скористатися повною формою оператора If:

If вираз Then

Оператор1

Else

Оператор2

End if

Якщо умова дотримується, виконується Оператор1 (або група операторів, розташованих між ключовими словами Then і Else, а якщо не дотримується - Оператор2 (або група операторів, розташованих між ключовими словами Else і End if.

Проте, не завжди можливі два варіанти рішення. Враховуючи це, VBA надає в розпорядження користувачів оператора Select Case, призначеного для вибору одного з множин варіантів рішень:

Select Case Місто

Case "Київ"

Код_МГТС = "044"

Case "Москва"

Код_МГТС = "095"

Case "Запоріжжя"

Код_МГТС = "061-2"

Case Else

Print "Я не знаю такого міста!"

End Select

При виконанні цього оператора перевіряється значення змінної Місто. Залежно від результату перевірки змінної Код_МГТС привласнюється телефонною код деякого міста. Якщо значення змінної Місто не співпадає ні з одним із значень, перерахованих в рядках з ключовим словом Case, проводиться дія, вказаною між ключовими словами Case Else і End Select.

5.3. Оператори циклу

Цикл використовується для багатократного повторення однієї або декількох інструкцій. Кількість повторень циклу пов'язана з деякою умовою. У VBA передбачено декілька різновидів циклів. Простим прикладом циклічної конструкції є так званий цикл по лічильнику.

For Лічильник = 1 To 10

Print Лічильник

Next Лічильник

Цикл по лічильнику обмежується ключовими словами For і Next. Після ключового слова For указується ім'я змінної, яка виконуватиме роль лічильника, після знаку рівності - початкове значення лічильника, а після ключового слова To - кінцеве значення лічильника.

Ще один різновид циклу - While-цикл. Умова виконання команд усередині такого циклу визначається деяким умовним оператором:

Do While Лічильник <> 10

Print

Loop

Різновидом циклу Do є Until-цикл, який виконується, поки умовний вираз помилковий:

Do Until Счетчик=10

Print

Счетчик=Счетчик+1

Loop


6. Excel VBA: Прийоми програмування

Як визначити останній запис в таблиці Excel?

Необхідно знайти останній запис в електронній таблиці. Це можна було б організувати функцією Application. SpecialCells (xlLastCell)

Як відмінити виділення діапазону осередків?

ActiveSheet. Cells. Select

Після припинення роботи макросу діапазон залишається виділеним. Як це виділення прибрати?

Selection. Cells (1). Select Фокус введення потрапить після цього на перший осередок раніше виділеного діапазону.

Як з макросу Excel програмно створити таблицю Access?

Ось фрагмент коду, який створює таблицю "BalanceShifr" базі даних MS Access:

Не забудьте виставити в Excel посилання на об'єкти DAO!

[VBA] Tools/References/Available References/ [x] MicroSoft DAO?.? Library ' Function CreateTable ' Create temporary table "BalanceShifr" into temporary database

Public Function CreateTable (ByVal dbTemp As Database) As Boolean

Dim tdfTemр As TableDef

Dim idx As Index

Dim fld As Field

On Error GoTo errhandle

CreateTable = True

' CREATE TABLE "BalanceShifr"

Set tdfTemp = dbTemp. CreateTableDef ("BalanceShifr")

Set fld = tdfTemp. CreateField ("ConditionId", dbLong)

fld. Required = True

tdfTemp. Fields. Append fld

Set fld = tdfTemp. CreateField ("Account", dbText,

4)

tdfTemp. Fields. Append fld

Set fld = tdfTemp. CreateField ("SubAcc", dbText,

4)

tdfTemp. Fields. Append fld

Set fld = tdfTemp. CreateField ("Shifr", dbLong)

tdfTemp. Fields. Append fld

Set fld = tdfTemp. CreateField ("Date", dbDate)

fld. Required = True

tdfTemp. Fields. Append fld

Set fld = tdfTemp. CreateField ("SaldoDeb", dbCurrency)

tdfTemp. Fields. Append fld

Set fld = tdfTemp. CreateField ("SaldoKr", dbCurrency)

tdfTemp. Fields. Append fld

dbTemp. TableDefs. Append tdfTemp

' CREATE INDEX "BalanceShifr"

Set tdfTemp = dbTemp. TableDefs ("BalanceShifr")

Set idx = tdfTemp. CreateIndex ("ForeignKey")

Set fld = idx. CreateField ("ConditionId")

idx. Fields. Append fld

tdfTemp. Indexes. Append idx

Exit Function

errHandle:

MsgBox "Table creating error!", vbExclamation, "Error"

CreateTable = False

End Function

Видалення листів залежно від дати

Як видалити робочі листи листів залежно від дати?

Ось код функції на Excel VBA, який вирішує дану проблему:

' Function DelSheetByDate

' Видаляє робочий лист sSheetName в активній робочій книзі

' якщо дата dDelDate вже наступила

' У разі успіху повертає True, інакше - False

Public Function DelSheetByDate (sSheetName As String _

dDelDate As Date) As Boolean

On Error GoTo errHandle

DelSheetByDate = False

' Перевірка дати

If dDelDate <= Date Then

' Не виводити підтвердження на видалення

Application. DisplayAlerts = False

ActiveWorkbook. Worksheets (sSheetName). Delete

DelSheetByDate = True

Application. DisplayAlerts = True

End If

Exit Function

errHandle:

MsgBox Err. Description, vbCritical, "Помилка №" & Err. Number

End Function

Придушення "гарячих" клавіш

Public Sub Auto_Open ()

' Overrride standard accelerators

With Application

. OnKey "^o", "Dummy"

. OnKey "^s", "NewAction"

. OnKey "^р", "" ' Kill hotkey!

End With

End Sub

' - ----

Public Sub Dummy ()

MsgBox "This hotkey redefined!"

End Sub

' - ----

Public Sub NewAction ()

SendKeys "^n" ' Press + for create new file

' instead of +!

End Sub

Hint: Відладжено в MS Excel '97!

Підказки до Toolbar

Як зробити до "саме намальованим" кнопочкам на Toolbar підказки?

Зробити можна от як: (Приклад реалізації на Excel’97 VBA)

' Створюємо тулбар

Рublic Sub InitToolBar ()

Dim cmdbarSM As CommandBar

Dim ctlNewBtn As CommandBarButton

Set cmdbarSM = CommandBars. Add (Name: ="MyToolBar"

Position: =msoBarFloating _

temporary: =True)

With cmdbarSM

' 1) Додаємо кнопку

Set ctlNewBtn =. Controls. Add (Type: =msoControlButton)

With ctlNewBtn

. FaceId = 26

. OnAction = "OnButton1_Click"

. TooltipText = "My tooltip message!"

End With

' 2) Додаємо ще кнопку

Set ctlNewBtn =. Controls. Add (Type: =msoControlButton)

With ctlNewBtn

. FaceId = 44

. OnAction = "OnButton2_Click"

. TooltipText = "Another tooltip message!"

End With

. Visible = True

End With

End Sub

Як визначити адресу активного осередку

Як в макросі дізнатися і використовувати поточне положення курсора

ActiveCell. Row і ActiveCell. Column - покажуть координати активного осередку.

Підрахунок коментарів на робочому листі

Як дізнатися чи є хоч один Notes (коментар) в робочому листі, окрім як перебором по всіх осередках?

У Excel'97 ця проблема може бути вирішена от як:

' Function IsCommentsPresent

' Повертає TRUE, якщо на активному робочому листі є хоч би

' один осередок з коментарем, інакше повертає FALSE

'

Public Function IsCommentsPresent () As Boolean

IsCommentsPresent = (ActiveSheet.comments. Count <> 0)

End Function

Підказки до Toolbar (Excel'95 і '97)

Як зробити свій власний Toolbar з tooltip’ами на кнопках в Excel’95?

Ось фрагмент коду для Excel'95, який створює toolbar з однією кнопкою з призначеним для користувача tooltiр'ом. Натиснення кнопки приводить до виконання макросу NothingToDo ().

' This example creates а new toolbar, adds the Camera button

' (button index number 228) to it, and then displays the new toolbar.

'

Public Sub CreateMyToolBar ()

Dim myNewToolbar As Toolbar

On Error GoTo errHandle:

Set myNewToolbar = Toolbars. Add (Name: ="My New Toolbar")

With myNewToolbar

. ToolbarButtons. Add Button: =228, StatusBar: ="Statusbar help string"

. Visible = True

With. ToolbarButtons (1)

. OnAction = "NothingToDo"

. Name = "My custom tooltiр text!"

End With

End With

Exit Sub

errНandle:

MsgBox "Error number " & Err & ": " & Error (Err)

End Sub

'

' Toolbar button on action code

'

Рublic Sub NothingToDo ()

MsgBox "Nothing to do!", vbInformation, "Macro running"

End Sub

Запуск Excel з пошуком осередку

Як запустити Excel, щоб опинитися на осередку вміст якої відомий наперед?

Характеристики

Тип файла
Документ
Размер
2,5 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее