Вопрос 3 Написать макрос, формирующий таблицу Пифагора в Excel для чисел от 1 до 10.
sub pifagor()
dim i,j as integer
for i=1 to 10
for j=1 to 10
workscheets(’Лист1′) cells(i,j)
value=i*j
next
exit
end sub
sub pifagor()
dim i,j as integer
for i=1 to 10
for j=1 to 10
workscheets(’Лист1′) cells(i,j)
value=i*j
next
exit
end sub
Этот объект используется для задания получателя любого действия. Диапазон может представлять одну ячейку, целую строку или колонку рабочего листа, произвольный двух- и трехмерный блок ячеек рабочей книги. В то время, как рабочая книга может иметь несколько диапазонов одновременно, не существует коллекции Ranges, осуществляющей доступ ко всем этим объектам.
Объект Range можно получить из свойства Range объектов Application, Worksheet или Range. Но работа с этим свойством в указанных объектах отличается друг от друга. Свойство Application.Range ссылается на текущий активный рабочий лист. Таким образом, после выполнения фрагмента
Dim RangeI As Range
Set Rangel=Application.Range(”A2″)
диапазон Range 1 будет ссылаться на ячейку А2 в том рабочем листе, который оказался активным во время работы программы. Как противоположность этому, свойство Worksheet. Range будет ссылаться на конкретный рабочий лист. Следующий фрагмент установит ссылку Range2 на ячейку В2 в рабочем листе SalesData, независимо от того, какой рабочий лист активен в данный момент:
Dim Range2 As Range-
Set Range2=Worksheets(”SalesData”).Range(”A2″)
Свойство Range.Range отличается тем, что оно возвращает позицию относительно первого диапазона. Рассмотрим следующий фрагмент:
Dim Range3 As Range, Range4. As Range
Set Range3=Worksheets(”SalesData”).Range(”B2″)
Set Range4=Range3.Range(”C4″‘)
В результате его выполнения Range4 будет ссылаться вовсе не на ячейку С4, а на D5. Это произошло потому, что данный диапазон устанавливается относительно диапазона Range3, который уже ссылается на В2, поэтому и результат смещается соответствующим образом — в данном случае на одну колонку вправо и на одну строку вниз.
Создание диаграмм является одним из ключевых свойств приложения Excel. При этом можно выбрать целое множество типов, подходящих практически ко всем вообразимым данным. Существуют такие общие типы, как гистограммы, линейные графики, круговые диаграммы и более специализированные, такие как диаграммы рассеивания, и биржевые диаграммы. Вы имеете полное управление многими аспектами отображения диаграмм, такими как цвета фона, текста и линий, заголовки, легенды и оси. Настоятельно рекомендуется потратить некоторое время на работу с диаграммами Excel, чтобы познакомиться с доступными в них параметрами, так как объем настоящей книги не позволяет описать все детали данного вопроса.
Листы диаграмм и внедренные диаграммы
Рабочая книга Excel имеет два способа отображения диаграмм. Первый метод отображает каждую диаграмму на отдельном рабочем листе, называемом листом диаграммы (chart sheet). Лист диаграммы содержит только одну диаграмму и не содержит колонок и -бтрок данных. Второй метод отображает диаграмму внедренной на стандартном рабочем листе. В обоих случаях вид диаграмм остается одинаковым — отличается только способ их отображения.
Листы диаграмм представляются коллекцией Charts,’ которая содержит объект Chart для каждого листа диаграммы заданной рабочей книги (объекта Workbook) или активной рабочей книги (объект Application). Таким образом, следующий фрагмент выведет на печать все листы диаграмм рабочей книги
Sales.xls:
WorkbooksCSales.xls”).Charts.Printout
Добавить новый лист диаграммы в коллекцию можно следующим методом:
Charts.Add
Как и в других коллекциях, каждому листу диаграммы в коллекции Charts можно присвоить имя, чтобы потом по нему обращаться к этому объекту:
Dim ch As Excel,Chart Set ch=Charts.Add Ch.Name=”Sales”
Объект Chart
Каждая диаграмма в рабочей книге, будь она внедренной или расположенной на собственном листе, представлена объектом chart. Данные, которые отображает диаграмма, устанавливаются в методе SetSourceData объекта Chart. Его синтаксис:
MyChart.SetSourceData(Source, PlotBy) Аргумент Source является ссылкой на объект Range, в котором находятся данные для отображения в диаграмме. Этот аргумент является обязательным. Необязательный аргумент PlotBy определяет, будут ли данные организованы в серии по строкам (xlRows, по умолчанию) или по столбцам (xlColumns). Данные, выводящиеся на диаграммы, обычно организованы в прямоугольную таблицу, в которой левая колонка и верхняя строка содержат метки, идентифицирующие данные. Метод содержит и другие аргументы, но они не являются общими. Еще одной важной составляющей создания диаграммы является задание типа диаграммы. Он устанавливается в свойстве ChartType объекта Chart, его возможными значениями являются константы xlChartType. В приложении Excel
имеется 14 основных типов диаграмм, таких как гистограммы, линейные графики и т.п. каждый их этих типов имеет несколько подтипов. Например, константа xlColumnCkastered задает обычную гистограмму, a xlColumnStacked — гистограмму с накоплением и т.п. Вместо перечисления здесь всех констант типов диаграмм, я предлагаю для этого воспользоваться окном Object Explorer.
Перед тем как вдаваться в детали, рассмотрим несколько примеров. Следующий фрагмент программы создает новый лист диаграммы, создает трехмерную гистограмму, используя данные, а затем активирует этот лист.
Dim c As Excel.Chart Set с = Charts.Add c.ChartType = xl3DColumnClustered
с.SetSourceData Source:=Worksheets(”Лист1″).Range(”B2:F6″) c.Activate
Метод ChartWizard
Метод ChartWizard используется для изменения внешнего вида диаграммы. Это гораздо легче, чем последовательное изменение отдельных свойств диаграммы (хотя и такой метод также используется). Его синтаксис:
ChartToModifу.ChartWizard (Source, Gallery, Format, _ PlotBy, CategoryLabels, SeriesLabels, _ HasLegend, Title, ValueTitle, ExtraTitle)
Управление внешним видом диаграммы
Объект Chart имеет сложную структуру. Он имеет множество свойств и методов, которые управляют различными аспектами внешнего вида диаграммы. Он также содержит несколько под объектов, представляющих компоненты диаграммы, такие как оси. Таким образом, некоторые манипуляции с диаграммой требуют установки соответствующих свойств одного или нескольких подобъектов. Объект Legend представляет легенду диаграммы. Свойства этого объекта управляют общим внешним видом легенды, например, шрифтом и рамкой. Каждый отдельный элемент легенды представлен объектом LegendEntry в коллекции LegendEntries. Отображение легенды управляется свойством HasLegend объекта Chart, которое может быть установлено в значения True или False.
Каждая ось в диаграмме представлена объектом Axis в коллекции Axes. Внешний вид отдельных осей управляется установкой свойств соответствующего объекта Axis. Количество осей (если они вообще существуют) находится в свойстве HasAxis объекта Chart.
Объект ChartGroup представляет одну или более серий данных, которые выводятся на диаграмму и используют одинаковый формат. Каждая серия данных в объекте ChartGroup представлена объектом Series в коллекции SeriesCol-lection. В большинстве диаграмм один объект ChartGroup содержит лишь одну серию данных.
Объект ChartTitle представляет заголовок диаграммы. Свойства этого объекта задают текст и его внешний вид.
На двумерных диаграммах объект chart Area представляет область, содержа
щую оси, наименования осей, наименование диаграммы и легенду. На трехмер
ной диаграмме он представляет область, включающую заголовок и легенду.
Свойства этого объекта определяют размер и шаблон заполнения фона этой об
ласти диаграммы. :
Объект PlotArea представляет область самой диаграммы — там, где отображаются данные. Как на двумерной, так и на трехмерной диаграмме область диаграммы содержит маркеры данных, линии сетки, метки данных и соединительные линии. На трехмерных графиках эта область также содержит стены, основание и оси.
Объекты Floor и Walls представляют основание и стены на трехмерной диаграмме. Свойства этих объектов управляют цветом и другими аспектами внешнего вида оснований и стен трехмерной диаграммы.
Большинство манипуляций заключаются либо в помещении чего-либо в ячейки рабочего листа, либо в чтении чего-либо из них. Свойство Value объекта Range используется как для чтения, так и для помещения данных в ячейки. Например, оператор
SomeRange.Value=data
помещает данные data в заданный диапазон. Если переменная SomeRange ссылается на более чем одну ячейку, данные помещаются во все ячейки диапазона. Существующие в ячейках данные замещаются без предупреждения. Данные могут быть числовыми, текстовыми, формулой или одной из встроенных функций Excel. Приведем несколько примеров:
Range (”Al”) .Value=123.4 . 56 . Range(”A2″).Value=”Sales Data” Range(”A3″).Value=”=Al/2″ Range(”Bll”).Value=”=sum(Bl:B10)”
Свойство Value также используется для получения значения из ячейки. Если заданный диапазон ссылается на одну ячейку, то свойство Value вернет её данные — число, текст или пустые данные. Если диапазон ссылается более чем на одну ячейку, свойство Value вернет массив, состоящий из данных всех ячеек. Это условие можно проверить, используя функцию isArray, например:
Dim x
X=Range(”SalesTotal“).Value If IsArray(x) Then
‘программа обработки массива Else
‘программа обработки одного значения End If
Возвращаемый массив является двумерным, с типом Variant. Для определения размера массива можно использовать функции Rbound и Lbound (он, естественно, будет иметь размеры диапазона).
Обратите внимание: хотя и может показаться, что свойство Value, возвращаемое пустой ячейкой, должно содержать пустую строку, на самом деле оно содержит специальное значение Empty. Для проверки этого значения используется функция IsEmpty:
If IsEmpty(Range(”Al“).Value) Then
‘ячейка Al — пустая Else
‘ячейка Al — не пустая End If
Если из ячейки вы хотите выбрать формулу, используется свойство Formula. В то время, как свойство Value возвращает результаты формул, саму формулу возвращает свойство Formula. С ячейками, в которых нет формул, свойство Formula работает подобно свойству Value. Рассмотрим следующий фрагмент:
Dim f, v
Range(”Al”).Value=5
Range(”A2″).Value=7
Range (”A3 “) . Value=” =A1+A2″
V=Range(”A3″).Value
F=Range(”A3″).Formula
После выполнения этого фрагмента переменная v будет содержать значение 12, а переменная f — строку “=А1+А2″.
Для того чтобы создать новую рабочую книгу, используется метод Add кол
лекции Workbooks:
\Workbooks.Add(Template)
Аргумент Template задает имя файла, который будет использован в качестве шаблона новой рабочей книги, или одну из предопределенных констант xlWBATemplate (их можно увидеть в Object Explorer). Когда в качестве аргумента задается константа, в новой рабочей книге будет содержаться только один рабочий лист заданного типа. Если аргумент Template опущен, создается новая рабочая книга, содержащая то количество рабочих страниц, которое указано в свойстве Application.SheetslnNewWorkbook (по умолчанию — 3). Метод Add возвращает ссылку на новую рабочую книгу, которая может быть, если это необходимо, присвоена переменной соответствующего типа:
Dim MyWorkbook As Excel.Workbook
Set MyWorkbook=Workbooks.Add(Template)
Для открытия существующей на диске рабочей книги используется метод Open. Его упрощенный синтаксис:
Workbooks.Open(Fi1епате)
Обязательный аргумент Filename задает путь и имя открываемого файла. Метод Open имеет большое число дополнительных аргументов, которые определяют открытие только для чтения, ввод требуемого пароля (если книга защищена) и то, добавлять ли этот файл в список последних открытых файлов (в меню File приложения Excel).
Для сохранения рабочей книги, которой уже было присвоено имя, используется метод Save объекта Workbook. Этот метод не имеет аргументов. Для сохранения новой рабочей книги в первый раз с присвоением ей имени или для сохранения книги под другим именем используется метод SaveAs. Его упрощенный синтаксис:
MyWorkbook. SaveAs (Fi 1 епате)
Аргумент Filename определяет имя файла, включая его путь. Метод SaveAs имеет также множество необязательных дополнительных аргументов, которые управляют назначением файлу пароля или формата. Эти подробности хорошо описаны в онлайновой справке.
Для сохранения копии рабочей книги под другим именем, не изменяя при этом имя текущей книги, используется метод SaveCopyAs:
^Workbook. SaveCopyAs (Fi 2 eName)
Перед тем как рабочая книга будет сохранена и ей будет присвоено имя, в свойстве Name будет содержаться имя, присвоенное по умолчанию приложением Excel (Bookl, Book2, и т.п.). После того как имя будет назначено, оно будет содержаться в свойстве Name. Свойство Name нельзя изменить напрямую — для этого обязательно использовать метод SaveAs. Объект Workbook содержит еще два свойства, которые связаны с его именем. Как только рабочая книга была сохранена, свойство FullName будет содержать полное имя файла (вместе с путем), а свойство Path будет содержать только путь.
Для закрытия рабочей Книги используется метод Close: MyWorkbook.С1ose{SaveChanges, FileName, RouteWorkbook)
Все три аргумента не являются обязательными. SaveChanges задает вариант действий для случая, когда рабочая книга содержит несохраненные изменения. Возможными значениями являются True (для сохранения изменений) и False (для игнорирования изменений). Если этот аргумент опущен, пользователю будет предложено сохранить изменения.
FileName — это имя файла, в который сохраняется рабочая книга. Если этот аргумент опущен, используется текущее имя. Если такового не существует, пользователю будет предложено его ввести.
RouteWorkbook относится только к тем рабочим книгам, которые имеют список распространения (routing slip), но еще не были распространены; устанавливается в значение True, если необходимо отправить рабочую книгу следующему получателю, в противном случае устанавливается в False. Если этот аргумент опущен, пользователю выводится соответствующий запрос.
© Проект «Студенты-Программеры»., 2008. Все права защищены.
Перепечатка материалов только при наличии активной ссылки на источник.
Powered by WordPress