Опис змінних види змінних
Для чого взагалі придумали якийсь опис змінних, ви замислювалися? Чи не все так просто, як здається. Змінна в певній програмі виконує свою функцію. Це зроблено для того, щоб ми відразу могли вказати програмі, яким чином необхідно "думати". Якщо у нас змінна містить якусь дату, то ми можемо це описати, і наш комп'ютер не буде ламати свою "голову" і думати, до якого типу віднести цю змінну і з чим її їсти. Якщо наша змінна - деяке число, то ми можемо відразу вказати нашій програмі, що зараз ця змінна деяке число, а не дата.
Багато напевно вже зрозуміли, що від того, як ми опишемо змінну в нашій програмі, буде залежати швидкість її виконання. Якщо у нас змінні не описані, то програма буде підбирати необхідне властивість для наших змінних вручну. А якщо ми вкажемо, що змінна відома (її тип), то програма відразу почне її виконувати.
Тепер подивимося, як можна описати змінну, один із прикладів показаний нижче:
Dim - це оператор
R - це змінна
As - це частина нашого синтаксису
Byte - це тип даних, який і описує нашу змінну.
Де ж описують ці змінні? Бажано описати змінні на початку вашого коду (програми), тобто так:
Dim Ghd As Byte
Dim Rd As Integer
далі йде код вашої програми.
Подивимося, які є змінні і які значення можливо привласнити цим змінним.
Універсальний тип, значенням якого можуть бути дані будь-якого з перерахованих вище типів, об'єкти, значення NULL і значення помилок ERROR.
Одним оператором Dim можна описати довільне число змінних, але конструкція Аs повинна бути вказана для кожної з них, інакше змінним без Аs буде присвоєно тип Variant.
наприклад:
Dim A As Byte, B As Integer, C, D As String
A - це змінна байтового типу
B - це змінна цілого типу
C - це змінна типу варіант (так як не описана)
D - це змінна строкового типу
Після всього цього може виникнути питання, а чи можливо оголосити змінну на початку всього документа, щоб потім її не оголошувати? Відповідь - можна. Називається це глобальна змінна. яка оголошується на початку вашого модуля, і після цього йдуть наші процедури. Записується вона наступним чином:
А в нашій програмі це буде виглядати так:
Public A As Byte
Public B As Integer
Public C As Integer
Dim Ghd As Byte
Dim Rd As Integer
Dim g As Integer
Це нас радує, тому що не треба тепер в кожній процедурі оголошувати одну і ту ж змінну. Але от не задача, дані нашої змінної живуть, тільки поки виконується наш макрос. Як тільки процедура закінчується, наша змінна скидається.
Але і на це є спосіб зберегти дані в змінної. Це називається статична змінна. І описується вона в такий спосіб:
Але, на жаль, оголошувати її можна тільки на рівні процедури. І в нашій програмі це буде виглядати так:
Static C As Integer
Якщо запустити даний макрос, то C в початковий момент дорівнюватиме 0. після завершення процедури змінна C буде дорівнювати 3. Якщо запустити даний макрос ще раз, то початкове значення змінної C дорівнюватиме вже 3. а в кінці процедури 6. Якщо так і виконувати наш макрос, то значення C буде підвищуватися кожен раз на 3. так як A + B = 3.
Можливо, хтось задумався, а чи можна відразу поставити нашій змінної деяке значення? І це можна, але тільки називається це вже не змінна, а константа. яка описується так:
Const A As Integer = 2323
При цьому описувати її як змінну не слід. Наш код буде виглядати, наприклад, так:
Const AConst = 10
Dim B As Integer