Мегаобучалка Главная | О нас | Обратная связь


Один    Два      Три      Четыре



2019-11-13 204 Обсуждений (0)
Один    Два      Три      Четыре 0.00 из 5.00 0 оценок




Однако если вместо запятых использовать символ (;), то напечатанные элементы не будут содержать пробелов:

Print 1; 2; 3; 4

1 2 3 4

Print “Один”; “Два”; “Три”; “Четыре”

ОдинДваТриЧетыре

Для управления печатью  используют функцию Format (). Функция Format () получает два аргумента, а возвращает отформатированную строку. Первым аргументом является переменная, содержащая число, которое нужно напечатать, а второй аргумент содержит строку форматирования, определяющую форму, в которой нужно напечатать число. строка форматирования подобна тому, что используется в Excel для форматирования содержимого ячеек.

Символ Значение символа
(#) Используется в качестве цифровых заполнителей
(,) Указывает на то, что каждые три символа отделяются запятой
(.) Указывает положение десятичной точки
(0) Указывает позицию обязательного символа

       Для печати в дисковый файл после зарезервированного слова Print необходимо записать символ (#), файловое число и запятую:

                 Print #файловое число, список_аргументов

где файловое_число определяет открытый файл, а список_аргументов содержит то, что необходимо напечатать.

Пример 1 “Работа оператора Print”

Open “ c :\Мои документы\ Myfile _1. txt ” For Output As 1

Print #1, “ Общий привет ”

Print #1, 5

a = 5

Print #1, a

Print #1, 1, 2, 3, 4

Print #1, 1; 2; 3; 4

Print #1, “ Один ”, “ Два ”, “ Три ”, “ Четыре ”

Print #1, “Один”; “Два”; “Три”; “Четыре”

Print #1, a

Print #1, a, Format(a, “#,###.00”), Format(a, “#.0”)

a = 0.1234

Print #1, a, Format(a, “#,###.00”), Format(a, “0.00”), Format(a, “00.00”)

a = 1234.

Print #1, a, Format(a, “#,###.00”), Format(a, “0.00”), Format(a, “00.0”)

Close #1

При использовании оператора Print данные, записываемые в дисковый файл, формируются в пригодную для чтения форму, подобную текстовому документу. Однако если предполагается чтение этих данных программами на Visual Basic, то их следует записывать не оператором Print, а оператором Write. Оператор Write работает подобно оператору Print, но сохраняет существовавшие кавычки и разделяет выводимые данные запятыми. Эти запятые и кавычки упрощают в Visual Basic определение конца одного элемента данных и начала другого.

Пример 2 “Работа оператора Write”

FNum = FreeFile

Open “c:\ Мои документы \Myfile_2.txt” For Output As FNum

Write #FNum, “ Общий привет ”

Write #FNum, 5

a = 5

Write #FNum, a

Write #FNum, 1, 2, 3, 4

Write #FNum, 1; 2; 3; 4

Write #FNum, “Один”, “Два”, “Три”, “Четыре”

Write #FNum, “Один”; “Два”; “Три”; “Четыре”

Write #FNum, a

Write #FNum, a, Format(a, “#,###.00”), Format(a, “#.0”)

a = 0.1234

Write #FNum, a, Format(a, “#,###.00”), Format(a, “0.00”), Format(a, “00.00”)

a = 1234.

Write #FNum, a, Format(a, “#,###.00”), Format(a, “0.00”), Format(a, “00.00”)

Close # FNum

Можно увидеть различия в результатах работы операторов Write и Print . Оператор Writeотделяет каждый элемент данных запятой и заключает каждую строковую величину в кавычки. Строки, возвращенные функцией Format (), также заключаются в кавычки. Использование кавычек и запятых для разделения отдельных элементов данных значительно упрощает применение оператора Input. Без них было бы практически невозможно определить, где кончается один записанный элемент и начинается следующий.

Для чтения данных из файла применяются операторы Input и Line Input. Первый аргумент каждого из этих операторов является символ (#) и файловое число, затем следует запятая, отделяющая указатель файла, подлежащего чтению. Далее следуют аргументы – имена переменных, которым присваиваются прочитанные из файла значения.

В операторе Input переменные, следующие после запятой, определяют порядок и количество данных, которые будут прочитаны из файла. Пробелы и табуляторы, расположенные в начале строки, игнорируются. Если переменная должна принимать числовые значения, то Visual Basic пытается прочесть из файла число. Первый непустой символ рассматривается как начало числа, и Visual Basic продолжает чтение числа. Если переменная является строковой, то Visual Basic читает эту строку, начиная с первого непустого символа, и прекращает чтение, если встречает запятую или конец строки. Если первый непустой символ является символом (“), то первым символом, прочитанным в строку, будет первый символ после символа (“) и чтение будет продолжено до тех пор, пока не встретиться второй символ (“) или конец строки, т.е. будут прочитаны все символы, заключенные в кавычки, включая запятые.

Операторы Writeи Input спроектированы для совместной работы в целях записи данных в файл и последующего их чтения.

Оператор Line Inputявляется дополнением оператора Input. Оператор Line Inputприсваивает единичному строковому аргументу все символы, обнаруженные в единичной строке файла. Строковому аргументу – переменной присваиваются все символы, включая начальные пробелы, запятые и кавычки. Оператор Line Input применяется для чтения в программу точной копии содержимого строки файла. Единичными символами, не пересылаемыми оператором Line Input, являются символы возврата каретки и перевода строки, рассматриваемые как конец строки.

Файлы произвольного доступа рассматриваются как последовательность записей постоянной длины, причем каждая запись является независимой от всех других записей файла. Длина записи определяется в операторе Open, а тип данных, указанный пользователем, определяет ее содержимое. Файлы произвольного доступа используются в основном для хранения двоичных представлений чисел, а не текстов. Применение двоичных чисел экономит пространство файла по сравнению с символьным представлением тех же чисел. Кроме того, двоичные числа загружаются в память компьютера значительно быстрее, так как не требуют преобразования перед использованием.

Открытие файла произвольного доступа подобно открытию файла последовательного доступа оператором Open, с двумя существенными отличиями: аргумент режима всегда равен Random, а в конце оператора находится аргумент Len =длина_записи.

Для открытия файла произвольного доступа используется следующий оператор Open:

  Open имя_файла For Random As файловое_число Len=длина_записи

где имя_файла – строка, содержащая имя и путь файла, подлежащего открытию; файловое_число – номер, который вы хотите присвоить файлу; длина_записи – длина записи произвольного доступа в байтах.

Так, следующие операторы открывают файл произвольного доступа для чтения или записи:

                                       FileNum1 = FreeFile

             Open “myfile.txt” For Random As FileNum1 Len = 256

Этот блок кода открывает файл произвольного доступа MYFILE.TXT с записями длиной 256 байтов. Функция FreeFile выбирает свободный номер файла.

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

Файл произвольного доступа, так же как и последовательный файл, закрывается оператором Close :

                               Close # файловое_число

где файловое_число – номер файла, указанный при открытии этого файла.

Оператор Type , применяемый для объявления типа, определяемого пользователем, может применяться также для объявления содержимого переменных типа запись, используемых для работ с файлом произвольного доступа. Оператор Type , используемый для объявления переменных типа запись, подобен применяемому для объявления типа, который определяется пользователем, за исключением того, что при объявлении переменных типа запись вы не используете тип Variant и учитываете, что все строковые переменные должны иметь постоянную длину. Максимальная длина записи, определенной оператором Type, должна быть не больше длины записи, объявленной оператором Open. Однако, если вы будете использовать типы меньшей длины, чем объявлено при открытии файла, то при сохранении каждой записи на диске разность между длиной записи и длиной типа будет расходоваться впустую.

В приведенном ниже примере оператор Type определяет запись длиной в 256 байтов для работы с базой данных личных контактов. Каждая строка имеет постоянную длину, что в обычном операторе Type не требуется.

                 Type DBEntry 'Определяет структуру записи базы данных.

                        Name As String * 25

                       Address As String * 25

                       City As String * 15

                       State As String * 2

                         Zip As String * 10

                      Phone As String * 20

                      Net As String * 10

                      NetAddr As String * 25

                      Referral As String * 25

                      Notes As String * 97

                      RecNo As Integer

                End Type      'Размер типа 256 байтов.

Чтобы узнать длину типа, определяемого пользователем, необходимо либо сложить длины всех переменных, входящих в указанный тип, либо объявить переменную указанного типа, а затем применить к ней функцию Len () .

В отличие от файлов последовательного доступа для сохранения данных в файлах произвольного доступа операторы Print или Write не применяются. Вместо них применяется оператор Put . Этот оператор имеет три аргумента – файловое число (номер, присвоенный файлу при открытии), номер записи и переменную типа запись:

            Put #файловое_число, номер_записи, переменная

           Get #файловое_число, номер_записи, переменная

Так, следующий оператор Put сохраняет содержимое переменной theDB (1) в третьей записи файла, открытого с файловым числом 1:

              Put #1, 3, theDB (1)

Если вы опустите номер записи в операторе Put , то будет использован номер, следующий за тем, который был использован в последнем из предыдущих операторов Get , Put или Seek .

Оператор Get имеет такой же синтаксис, как и оператор Put . Он также имеет три аргумента – файловое число, номер записи и переменную типа запись, получающую данные из записи на диске.

 

          

                  Работа с диаграммами: объект Chart .

 

     Одно из основных применений Excel — это анализ данных. А для анализа данных часто удобно использовать диаграммы с их специальными возможностями, такими, как тренды. На практике задачи по автоматизации создания множества похожих друг на друга диаграмм (обычно на основе информации, полученной из базы данных) возникают очень часто.

Диаграммы в Excel создаются при помощи объекта Chart.

Лучше всего вначале этот объект объявить:

                          Dim oChart As Chart

Дальше можно создавать диаграмму. Производится создание диаграммы при помощи много раз использованного нами приема — вызова метода Add() коллекции Charts:

       Set oChart = ActiveWorkbook.Charts.Add(, ActiveSheet)

В принципе, диаграмма уже создана, но, поскольку никакие ее свойства не определены, она выглядит просто как пустой лист. Чтобы она обрела содержание, необходимо выполнить еще несколько действий:

Первое (и единственное обязательное действие) — определить источник данных для диаграммы, для чего предназначен метод SetSourceData(). В качестве источника может выступать только объект Range (он передается в качестве первого и единственного обязательного параметра этого метода). Второй параметр (необязательный) определяет, в каком порядке считывать данные — сначала по столбцам или сначала по строкам. Например, в нашем случае это может выглядеть так:

           oChart.SetSourceData(Sheets("Лист1").Range("A1:A10"))

В принципе, если запустить созданный код на выполнение, то диаграмма уже будет создана. Для всех остальных параметров будут приняты значения по умолчанию. Однако на практике нужно определить еще хотя бы тип диаграммы (по умолчанию она будет выглядеть как "обычная гистограмма", то есть ряд из столбиков разной длины). Для этой цели используется свойство ChartType, для которой разработчиками предусмотрено целых 73 значения. Например, чтобы преобразовать диаграмму в обычный график, можно использовать код вида:

                   oChart.ChartType = xlLineMarkers

Еще одна очень распространенная задача – добавить дополнительные ряды на диаграмму. Для этой цели необходимо создать и получить ссылку на объект Series – ряд, а потом для ряда определить свойство Values (ему передается в качестве значения объект Range):

Dim oSeries As Series

              Set oSeries = oChart.SeriesCollection.NewSeries

             oSeries.Values = Worksheets(1).Range("B1:B10")

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

                 oChart.Location xlLocationAsObject, "Лист1"

Обратите внимание, что метод Location принимает в качестве первого параметра одну из констант (xlLocationAsNewSheet – переместить на специально создаваемый новый лист, xlLocationAsObject – переместить на объект, то есть лист), а в качестве второго – не объект листа, как можно было бы подумать, а обязательно его имя. Если код предполагается использовать и в русской, и в английской версии Excel, то предпочтительнее получить имя листа программным образом.

Большая неприятность, связанная с методом Location, заключается в том, что после перемещения диаграммы внутрь листа объектная ссылка на эту диаграмму теряется, и надо находить объект этой диаграммы заново. При попытке повторного обращения к объекту Chart выдается сообщение "Automation Error". Лучше всего поэтому вызов метода Location помещать в самый конец кода, посвященного диаграмме. В противном случае нам придется разыскивать созданную нами диаграмму и заново получать на нее объектную ссылку, например так:

                                 Dim oSeries As Series

Set oSeries = Worksheets(1).ChartObjects(1).Chart.SeriesCollection.NewSeries

                         oSeries.Values = Worksheets(1).Range("B1:B10")

Так работать, конечно, намного менее удобно.

Остальные многочисленные параметры диаграммы настраиваются при помощи свойств и методов объектов Chart:

свойство ChartArea — это свойство возвращает одноименный объект ChartArea, который представляет собой область, занимаемую диаграммой и используется для настройки внешнего вида диаграммы (свойства Font, Interior и т.п.). Если необходимо настроить внешний вид не всей диаграммы, а той ее части, которая используется непосредственно для вывода графика, используется схожее свойство PlotArea. По умолчанию диаграмма размещается прямо по центру листа. Если необходимо ее переместить в точно определенное место листа, используются знакомые на свойства Top, Height, Left и Width для объекта ChartArea.

свойство ChartTitle возвращает одноименный объект, при помощи которого можно настроить заголовок диаграммы (с такими свойствами, как Text, Font, Border и т.п.);

ChartType — важнейшее свойство, про которое мы уже говорили. Определяет тип диаграммы;

HasDataTable — если установить это свойство в True, то в нижней части диаграммы (по умолчанию) появится таблица с числами, на основе которых была создана диаграмма. Одновременно будет создан программный объект DataTable, при помощи которого можно настроить представление этой таблицы. Схожим образом действуют свойства HasLegend, HasPivotFields и HasTitle.

Name — это свойство позволяет настроить имя диаграммы (как название вкладки в Excel). По умолчанию диаграммы называются последовательно "Диаграмма1", "Диаграмма2" и т.п.

SizeWithWindow — если поставить значение этого свойства в True (по умолчанию False), то размер диаграммы будет подогнан таким образом, чтобы точно соответствовать размеру листа.

Tab — свойство, о котором мало кто подозревает. Оно позволяет настроить при помощи одноименного объекта внешний вид вкладки в книге Excel для диаграммы (или просто листа). Например, чтобы пометить вкладку зеленым, можно воспользоваться кодом

                   oChart.Tab.Color = RGB(0, 255, 0)

Visible — возможность спрятать диаграмму без ее удаления.

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

Теперь — о самых главных методах объекта Chart:

метод Activate() используется очень часто. Он позволяет сделать диаграмму активной (то есть просто перейти на нее);

метод ApplyCustomType() позволяет поместить создать диаграмму своего собственно пользовательского типа (для этого необходимо вначале создать шаблон для этого типа и поместить его в галерею);

метод ApplyDataLabels() позволяет поместить на диаграмму метки для размещенных на ней данных. Этот метод принимает множество параметров, которые позволяют настроить отображение данных меток (показывать или не показывать значения и т.п.);

метод Axes() возвращает объект, представляющий оси диаграммы. Затем этот объект можно использовать для настройки данных осей;

ChartWizard() — этот метод позволяет быстро переформатировать диаграмму, как будто бы прошли на графическом экране при помощи мастера построения диаграмм и передали ему значения. Позволяет при помощи одной строки кода добиться того, что другими способами потребовало бы минимум несколько строк;

Copy() — позволяет скопировать диаграмму в другое место книги (например, чтобы создать новую диаграмму, использовав в качестве основы существующую). Для переноса существующей диаграммы в другое место можно воспользоваться методами Location() или Move().

CopyPicture() — замечательный метод, который позволяет поместить диаграмму в буфер обмена как изображение. Затем это изображение можно вставить, например, в документ Word или в любое другое место. Другой вариант — воспользоваться методом Export(), который позволяет создать рисунок, представляющий диаграмму, в виде файла на диске.

Delete() — просто удаляет диаграмму;

Evaluate() — как обычно, этот метод позволяет найти нужную диаграмму в книге по ее имени;

PrintOut() — возможность отправить диаграмму на печать. Этот метод принимает множество параметров, которые позволяют настроить такой вывод;

Refresh() — возможность обновить диаграмму, если изменились данные, на основе которых она строилась;

Select() — возможность выделить диаграмму (равносильно щелчку по ней мышью). Deselect() — снятие выделения (равносильно нажатию на <Esc>);

SetBackgroundPicture() — возможность "подложить" под диаграмму фоновый рисунок. Конечно, он должен быть не очень ярким;

SetSourceData() — важнейший метод, который позволяет определить данные, на основе которых строится диаграмма. Про него мы уже говорили.

Для объекта Chart предусмотрено также события "на все случаи жизни" — реакция на щелчки мышью, на выделение/снятие выделения, активизацию, пересчет данных, изменение размера и т.п., однако используются такие события на практике нечасто.

 

                                  Методы объекта Chart .

 

Диаграммы можно размещать на рабочем листе. Для этого используется коллекция chartobjects. Ее элементы - объекты класса chartobject - являются контейнерами, содержащими объект Chart, задающий непосредственно диаграмму.

Рассмотрим основные методы, определяющие новое поведение объекта Chart:

SubChartWizard ([Source], [Gallery], [Format], [PlotBy], [CategoryLabels], [SeriesLabels], [HasLegend], [Title], [CategoryTitle], [ValueTitle], [Extra-Title])

Этот метод позволяет построить или модифицировать существующую диаграмму. В отличие от мастера диаграмм (ChartWizard), который вызывается при построении диаграммы вручную, метод не является интерактивным, более того, он не позволяет задать все возможные свойства. С его помощью можно выполнить основную работу, а детали строятся с использованием других свойств и методов объекта Chart. Все параметры метода являются необязательными:

Source - объект Range, содержащий исходные данные для построения новой диаграммы. Если параметр опущен, то метод позволяет отредактировать существующую диаграмму - либо выделенную диаграмму рабочего листа, либо диаграмму активного листа диаграмм;

Gallery - задает тип диаграммы и может быть одной из следующих констант: xlArea, xlBar, xlColumn, xlLine, xlPie, xlRadar, xlXY-Scatter, xlCombination, xl3DArea, xl3DBar, xl3DColumn, xl3DLine, xl3DPie, xl3DSurface, xlDoughnut, или xlDefaultAutoFormat;

Format - задает формат для данного типа диаграммы. Каждому типу диаграммы соответствует некоторое число возможных форматов. Параметр задает номер формата, по умолчанию выбирается первый формат данного типа;

PlotBy - соответствует терминальному свойству PlotBy;

CategoryLabels и SeriesLabels - целые, указывающие число строк или столбцов с метками категорий и рядов данных в области, заданной параметром Source. Указывать эти числа нужно на единицу меньше фактического значения;

остальные параметры позволяют добавить легенду, задать название диаграммы и ее осей - они совпадают с соответствующими терминальными свойствами.

Sub SetSourceData (source as range, [plotby]). Устанавливает источник данных диаграммы. Второй параметр соответствует терминальному свойству P lotby.

SubApplyCustomType (ChartTypeAsXlChartType, [typename]). Метод позволяет модифицировать диаграмму, применив к ней новый тип - стандартный или настраиваемый. Если этот тип стандартный, то тогда первый параметр полностью его определяет. Его возможные значения совпадают со значениями соответствующего терминального свойства charttype. Если же тип настраиваемый, то первый параметр должен иметь одно из следующих значений: xlbuiltin, xluserdefined или xlanygallery. В этом случае второй параметр задает имя типа диаграммы.

Function Export (filename as string, [filtername], [interactive]) as boolean позволяет экспортировать диаграмму, преобразуя ее в графический формат. Первый параметр задает имя файла, в который будет записана диаграмма в графическом формате, второй - задает имя графического фильтра в том виде, как оно записано в системном регистре. Булев параметр interactive должен иметь значение true, если мы хотим вызвать диалоговое окно в процессе фильтрации. Функция export возвращает значение true в случае успешного завершения работы.

Sub GetChartElement (x as long, y as long, elementid as long, argl as long, arg2 as long). Если пользователь щелкнул кнопку мыши над диаграммой. Обработав это событие, можно получить координаты курсора мыши - x и y. Если теперь вызвать метод getchartelement с этими координатами, то он вернет значение параметра elementid - идентификатор элемента диаграммы и значения двух параметров, связанных с этим элементом. Параметры зависят от типа того элемента, чьи координаты x и y заданы.

Function Location (where as xlchartlocation, [name]) as Chart. Передвигает диаграмму в новое местоположение. Параметр Where имеет следующие значения: xlLocationAsNewSheet, xlLocationAsObject или xlLocationAutomatic.

В первом случае диаграмма помещается на новый лист диаграммы и параметр Name задает имя этого листа. Во втором случае диаграмма помещается как встроенный объект и Name задает имя рабочего листа.


 

                                                Ход работы.

 

В ходе работы необходимо создать два  генератора программного и аппаратного типов, а также  оценить качество их работы (рисунок 2):

   

1.
Создать  таблицу “Генератор случайных чисел” согласно рисунка 2.


 

Добавить исходные данные в ячейки A 4=0, B 4=9 , C 4=10000 , D 4=1.

2. Добавить поясняющие надписи согласно рисунка 2.

3. Добавить элемент управления TextBox 1  в  Меню→Разработчик → Вставить→Поле.

Изменить свойство TextBox 1- Value - d :\ proverka . wav

Изменить размеры TextBox 1 согласно рисунка 2.

4. Вставить ListBox 1 согласно рисунка 2 Меню→Разработчик→Вставить→Список

5. Вставить ListBox 2 согласно рисунка 2 Меню→Разработчик→Вставить→Список

6. Вставить кнопку CommandButton 1 согласно рисунка 2 Меню→Разработчик→Вставить→Кнопка.

Изменить надпись на кнопке Properties → Caption →”Программный генератор”.

7. Дважды щелкнуть по кнопке ”Программный генератор” для открытия среды программирования VBA .

Вставить программный код на языке VBA  вместо автоматически сгенерированного программой:



2019-11-13 204 Обсуждений (0)
Один    Два      Три      Четыре 0.00 из 5.00 0 оценок









Обсуждение в статье: Один    Два      Три      Четыре

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (204)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.011 сек.)