Файл: Е. А. Рябухина, О. А. Гущина, Д. А. Губанов, Д. В. Емельянов.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 01.12.2023

Просмотров: 596

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Элемент одномерного массива указывается в виде V(K), где V – имя массива, K – значение индекса; элемент двумерного – V(K,N), где первый индекс всегда означает номер строки, а второй – номер столбца.Если же в программе необходимо изменить размер массива, то используют динамические массивы.Описание динамического массива выполняется следующим образом:Dim V() As TypeRedim V(n)илиRedim V(1 to N)Здесь N и n может быть константой или переменной.Если массивы используются в качестве параметров подпрограмм, то они описываются в основной программе как динамические.Если ранее указанная размерность динамического массива изменяется в процессе программы, то все существующие в нем значения обнуляются. Если возникает ситуация, при которой требуется увеличить размерность массива, сохранив его содержимое, то в операторе Redim используется служебное слово Preserve.Dim A() As Single – объявляет динамический массив.ReDimA(1 To 3, 1 To 5) ReDim Preserve A(1 To 3, 1 To 6) – изменяет последний размер массива, сохраняя содержимое.Внимание! При использовании ключевого слова Preserve можно изменять только последнее измерение многомерного массива!При этом изменяется только верхняя граница последней размерности массива, то есть можно добавить в одномерный массив новый элемент или новый столбец в матрицу.Если данные, хранящиеся в массиве, становятся ненужными для дальнейшей работы, то можно удалить массив с помощью оператораErase Имя_массивас целью экономии оперативной памяти.Для двумерного массива также допустимо использование функций Ubound и Lbound, но они имеют вид Ubound(V,2) и Lbound(V,2). Здесь V – имя массива, 2 – номер измерения.Пример: даны матрицы A(3,3) и B(3,3). Получить матрицу С=А+В.Dim A(1 to 3,1 to 3) As Integer, B(1 to 3,1 to 3) As Integer, C(1 to 3, 1 to 3) As IntegerDim I As Byte, J As ByteFor I=1 to 3For J=1 to 3A(I,J)=CELLS(I,J)B(I,J)=CELLS(I, J+2)Next J Next IFor I=1 to 3For J=1 to 3C (I,J)=A(I,J)+B(I,J)CELLS(I+4,J)=C(I,J)Next J Next IRange (“A5:C7”).SelectWith Selection.FONT.NAME=”Times New Roman”.BORDERS.COLOR=RGB(200,0,0)
End WithВнимание! Предполагается, что при суммировании целочисленных матриц А и В результат не выходит за пределы типа Integer.18. Строковые переменные и их обработка в VBAСтроковой (символьной текстовой) константой называется последовательность символов, количество которых не превышает 256, при этом последовательность заключается в кавычки(“ ”).Пример: “ABC”, “$CV$EDRE” и т.д.Строковой переменной называется переменная, значением которой является строковая константа. Строковые переменные описываются типом String или суффиксом $.Пример:A$=”ABC”Если реальная длина строковой константы меньше 256, то память под нее все равно выделяется в размере как для 256-символьной, поэтому, если реальная длина текстовой константы значительно меньше 256, целесообразно использовать строки фиксированной длины. Объявление строковой переменной фиксированной длины имеет вид:Dim V As String * nгде n – длина переменнойПример:DimA As String*5Объявленная таким образом переменная V всегда будет содержать ровно 5 символов. Если ей присвоить более короткую строку, VBA добавит после символов этой строки нужное число пробелов. Если же переменной присвоить более длинную строку, VBA сохранит в переменной только 5 первых символов, отбросив остальные: Строковые константы и переменные можно сравнивать между собой, при этом сравнение происходит посимвольно слева направо. В VBA одна строка равна другой только, когда обе строки содержат точно такие же символы в точно таком же порядке и обе строки имеют одну и ту же длину. Следует быть внимательным при сравнении строк переменной длины.В VBA существуют два способа сравнения строк – двоичное и текстовое сравнение. Разница заключается в том, что при текстовом сравнении по существу сравниваются уникальные коды символов – коды ASCII. Так, цифры 0-9 имеют коды 48-57, латинские буквы A-Z – коды 65-90, буквы a-z – коды 97-122.Таким образом, если символ С является цифрой, то для него выполняется условие“0”<=C<=”9”а для латинских прописных букв – “A”<=C<=”Z”При использовании данного способа сравнения, из двух констант одинаковой длины меньшей считается та, в которой первый из несовпадающих символов имеет меньший код ASCII.

Таким образом, “Abc”<”abc”.При текстовом сравнении строк VBA не использует коды символов, и не "различает" верхнего и нижнего регистра. В текстовом сравнении строка "абв" равна строке "АБВ".Для выбора метода сравнения строк используется директива Option Compare:Option Compare [Text | Binary]Данная директива должна находиться в области объявления модуля.К символьным константам применяется операция, называемая конкатенацией, или сложением строк. При этом происходит склеивание строк в порядке их следования. Для конкатенации используется символ & (амперсанд), хотя допускается использование обычного знака +.Символ (&) операции конкатенации обязательно необходимо отделять пробелом от имени переменной, т.к. в противном случае VBA может интерпретировать этот символ как символ определения типа Long.К строковым данным применяются следующие встроенные функции:

  1. Len(S) – вычисляет длину символьной константы, т.е. количество символов в ней, кавычки при этом не учитываются; результат относится к числовому типу
Пример: Len(“ABC”)=3

  1. Left(S,N) – копирует N символов из S, начиная с левого крайнего, результат относится к строковому типу.
Пример: Left(“ABCD”,2)=”AB”

  1. Right(S,N) – копирует N символов из S, начиная с правого крайнего, результат относится к строковому типу.
Пример: Right(“ABCD”,2)=”CD”

  1. Mid(S,N1,N2) – копирует N2 символов из S, начиная с позиции символа в S, заданной аргументом N1, результат относится к строковому типу.
Пример: Mid(“ABCDEF”,2,3)=”BCD”

  1. LCase (S) – заменяет в символьной константе S все символы верхнего регистра соответствующими символами нижнего регистра.
Пример: LCase(“ABC”)=”abc”

  1. UCase(S) – заменяет в символьной константе S все символы нижнего регистра соответствующими символами верхнего регистра.
Пример: UCase(“abc”)=”ABC”

  1. ASC(“C”) – определяет ASCII-код символа С, результат относится к числовому типу.

Пример: ASC(“Z”)=90

  1. Chr(N) – результатом является символ, с кодом ASCII, равным N, результат относится к строковому типу. N принимает значения не более 255.
Пример: Chr(90)=”Z”

  1. Spase(N) – возвращает строку пробелов длиной N символов.
Внимание! При применении функции Len к константам фиксированной длины результат всегда равен формальной, т.е. объявленной длине константы. Чтобы узнать фактическую длину, применяем конструкцию Len(Trim(S)).

  1. InStr ([k, ] S1, S2 [, Compare]) – дает возможность определить, содержит ли одна строка другую строку. Результатом функции является число, обозначающее порядковый номер символа в S1, с которого начинается S2. Если InStr не находит S2 в String1, то возвращается 0. Если S1 (или S2) имеет значение Null, то функция также возвращает Null. Compare – необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare)
vbBinaryCompare – бинарное сравнение двух строк;vbTextCompare – текстовое сравнение двух строк;k – необязательный аргумент, является численным выражением и указывает положение символа в S1, с которого должна начинаться проверка/Пример: InStr(“ABCD”,”BC”)=2Пример программы, определяющей диапазон ячеек по номерам столбцов (для простоты будем считать, что используются только столбцы A-Z).Sub primer()n_nomer% = 4k_nomer% = 8If k_nomer% < n_nomer% Then MsgBox ("Неверныеданные"): GoTo 1n_stroka% = 5k_stroka% = 10If k_stroka < n_stroka Then MsgBox ("Неверныеданные"): GoTo 1x% = 64 + n_nomery% = 64 + k_nomerL1$ = Chr(x)L2$ = Chr(y)m1 = LTrim(Str(n_stroka))m2 = LTrim(Str(k_stroka))diap$ = L1 + m1 + ":" + L2 + m2ActiveSheet.Range(diap).SelectWith Selection.Font.Bold = True.Font.Italic = True.Font.Size = 14.Font.Name = "Times New Roman".Borders.Color = RGB(100, 0, 100)End With1: End SubОбратная задача: по буквенным обозначениям столбцов определить их номера и задать определенные свойства соответствующему диапазону.
SUB primer()Dim A As ObjectDIAP$=”a1:b6”D$=UCase(DIAP)NSTOLB$=Left(D,1)POSDV=InStr(D,”:”)KONSTOLB$=Mid(D,POSDV+1,1)NSTR$=Mid(d,2,POSDV-2)KSTR$=Right(D,Len(D)-POSDV-1)NROW1=ASC(NSTOLB)-64NROW2=ASC(KONSTOLB)-64NLINE1=VAL(NSTR)NLINE2=VAL(KSTR)For I=NLINE1 To NLINE2For J=NROW1 To NROW2SET A=CELLS(I,J)A.INTERIOR.COLORINDEX=I+JNextJNextI19. Функции даты и времениDate – возвращает системную дату.Time – возвращает системное время.Now – возвращает системные дату и время.Year(D) – возвращает целое, являющееся частью выражения типа Date и содержащее год. Год возвращается как число между 100 и 9999.Month(D) – возвращает целое, являющееся частью выражения типа Date и содержащее месяц. Месяц возвращается как число между 1 и 12.Day(D) – возвращает целое, являющееся частью выражения типа Date и содержащее день. День возвращается как число между 1 и 31.WeekDay(D) – возвращает целое, являющееся частью выражения типа Date и содержащее день недели. День недели возвращается как число между 1 и 7 (1 – воскресенье…).Hour(D) – возвращает целое, содержащее часы как часть времени, содержащегося в выражении типа Date. Часы возвращаются как число между 0 и 23. Если аргумент не содержит значения времени, то возвращается 0.Minute(D) – возвращает целое, содержащее минуты как часть времени, содержащегося в выражении типа Date. Минуты возвращаются как число между 0 и 59. Если аргумент не содержит значения времени, то возвращается 0.Second(D) – возвращает целое, содержащее секунды как часть времени, содержащегося в выражении типа Date. Секунды возвращаются как число между 0 и 59. Если аргумент не содержит значения времени, то возвращается 0.DateSerial(N,N,N) – возвращает значение последовательной даты для заданной даты. Слева направо аргументы представляют год (целое число от 100 до 9999), месяц (от 1 до 12) и день (от 1 до 31).TimeSerial(N,N,N) – возвращает значение последовательного времени. Слева направо аргументы представляют часы (целое число от 0 до 23), минуты (от 0 до 59) и секунды (от 0 до 59).DateValue(E) – возвращает значение типа Date, эквивалентное дате, заданной аргументом Е, который может быть строкой, числом или константой, представляющей время.