Введение в программирование на VBA - eDrive

Введение в программирование на VBA - eDrive Введение в программирование на VBA - eDrive

edrive.narod.ru
from edrive.narod.ru More from this publisher
06.01.2015 Views

36 лексему ByVal, настраивающую функцию на работу не с адресами, а со значениями аргументов. Лексема ByRef возвращает передачу ссылок на адреса. А если передача аргументов в функцию необязательна, в списке аргументов такой функции используются лексемы Optional и Paramarray. Примеры Sub ТеоремаПифагора () MsgBox Sqr (СуммаКвадратов (2, 3) ) End Sub Function СуммаКвадратов (катет1, катет2) СуммаКвадратов = катет1 ^ 2 + катет2 ^ 2 End Function Const pi = 3.14159 Sub Круг () радиус = InputBox ("Введите радиус") длина = РасчетДлины (радиус) радиус1 = радиус ' радиус удвоен площадь = РасчетПлощади (радиус) радиус2 = радиус ' радиус не изменился MsgBox "Длина окружности радиусом " & радиус1 & " равна " _ & длина & Chr (13) & "Площадь круга радиусом " & _ радиус2 & " равна " & площадь End Sub Function РасчетДлины (переменная, Optional текст = "Удвоенный радиус") переменная = переменная * 2 ' в расчете используется удвоенный радиус РасчетДлины = 2 * pi * переменная MsgBox текст End Function Function РасчетПлощади (ByVal Переменная) переменная = переменная / 2 ' используется уменьшенный радиус РасчетПлощади = pi * переменная ^ 2 End Function Файлы В Visual Basic различают три способа доступа к информации, размещенной в файлах накопителей: последовательный, прямой и двоичный доступ. В первом случае данные заносятся в файл и считываются строками, имеющими произвольную длину. Во втором случае строки имеют строго фиксированную длину, а запись и чтение возможны в произвольном порядке. В последнем случае организуется произвольный доступ к данным без разбивки их на строки.

37 Для ввода информации в файл и чтения файлов последовательного доступа служит группа файловых операторов и функций. Вначале файл открывается в памяти: Open имяФайла [For Input] [For Output] [For Random] _ [Access Read,Write] [Read] [Write] [Защита] _ As [#]Номер [Len=Длина] Затем данные заносятся в файл или читаются из него одним из следующих выражений: • Print #Номер [, форматированныйТекст] • Write #Номер [, неФорматированныйТекст] • Line Input #Номер, Переменная и файл закрывается: Close [#Номер,…] Прямой доступ позволяет находить нужные записи в файле, считывать и обновлять их, не перебирая для этого все записи. При этом оператор Open сопровождается лексемой Random и задает длину записи Len, то есть количество считываемых байтов: Get [#]Номер, [Запись], имяПеременной или записываемых байтов: Put [#]Номер, [Запись], имяПеременной Любой файл можно переименовать или удалить: • Name имяФайла As новоеИмя • Kill имяФайла Примеры Sub Имя () имяФайла = InputBox ("Файл ", "Введите имя файла", _ "мойФайл.txt", 100, 100) MsgBox имяФайла, vbInformation MsgBox ПоследовательныйДоступ (имяФайла), vbInformation End Sub Function ПоследовательныйДоступ (имяФайла) Open имяФайла For Output As 1 Print #1, "Тест для записи и чтения" Close 1 Open имяФайла For Input As 1 Line Input #1, тест

37<br />

Для <strong>в</strong><strong>в</strong>ода информации <strong>в</strong> файл и чтения файло<strong>в</strong> последо<strong>в</strong>ательного<br />

доступа служит группа файло<strong>в</strong>ых операторо<strong>в</strong> и функций. В<strong>на</strong>чале файл<br />

откры<strong>в</strong>ается <strong>в</strong> памяти:<br />

Open имяФайла [For Input] [For Output] [For Random] _<br />

[Access Read,Write] [Read] [Write] [Защита] _<br />

As [#]Номер [Len=Дли<strong>на</strong>]<br />

Затем данные заносятся <strong>в</strong> файл или читаются из него одним из следующих<br />

<strong>в</strong>ыражений:<br />

• Print #Номер [, форматиро<strong>в</strong>анныйТекст]<br />

• Write #Номер [, неФорматиро<strong>в</strong>анныйТекст]<br />

• Line Input #Номер, Перемен<strong>на</strong>я<br />

и файл закры<strong>в</strong>ается:<br />

Close [#Номер,…]<br />

Прямой доступ поз<strong>в</strong>оляет <strong>на</strong>ходить нужные записи <strong>в</strong> файле, считы<strong>в</strong>ать<br />

и обно<strong>в</strong>лять их, не перебирая для этого <strong>в</strong>се записи. При этом оператор Open<br />

сопро<strong>в</strong>ождается лексемой Random и задает длину записи Len, то есть<br />

количест<strong>в</strong>о считы<strong>в</strong>аемых байто<strong>в</strong>: Get [#]Номер, [Запись], имяПеременной<br />

или записы<strong>в</strong>аемых байто<strong>в</strong>: Put [#]Номер, [Запись], имяПеременной<br />

Любой файл можно переимено<strong>в</strong>ать или удалить:<br />

• Name имяФайла As но<strong>в</strong>оеИмя<br />

• Kill имяФайла<br />

Примеры<br />

Sub Имя ()<br />

имяФайла = InputBox ("Файл ", "В<strong>в</strong>едите имя файла", _<br />

"мойФайл.txt", 100, 100)<br />

MsgBox имяФайла, vbInformation<br />

MsgBox Последо<strong>в</strong>ательныйДоступ (имяФайла), vbInformation<br />

End Sub<br />

Function Последо<strong>в</strong>ательныйДоступ (имяФайла)<br />

Open имяФайла For Output As 1<br />

Print #1, "Тест для записи и чтения"<br />

Close 1<br />

Open имяФайла For Input As 1<br />

Line Input #1, тест

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!