Tải bản đầy đủ - 0 (trang)
Example 20-8. The cmdPrint_Click Event Procedure

Example 20-8. The cmdPrint_Click Event Procedure

Tải bản đầy đủ - 0trang

' Add item to list box

lstPTs.AddItem PT.Name & " ( in " & _

sSheets(cPTs) & ")"

Next

Next

End Sub



20.12.2.5 PrintPTs procedure

The main printing procedure is shown in Example 20-10. Note that we have been careful to deal

with two special cases. First, there may not be any pivot tables in the workbook. Second, the user

may hit the Print button without selecting any pivot tables in the list box. Note also that list boxes

are 0-based, meaning that the first item is item 0. However, our arrays are 1-based (the first item is

item 1), so we must take this into account when we move from a selection to an array member; to

wit, selection i corresponds to array index i+1.

Example 20-10. The PrintSelectedPTs Procedure

Sub PrintSelectedPTs()

' Print the selected pivot tables in lstPTs

Dim i As Integer

Dim bNoneSelected As Boolean

bNoneSelected = True

If cPTs = 0 Then

MsgBox "No pivot tables in this workbook.", _

vbExclamation

Exit Sub

Else

For i = 0 To lstPTs.ListCount - 1

If lstPTs.Selected(i) Then

bNoneSelected = False

' List box is 0-based, arrays are 1-based

Worksheets(sSheets(i + 1)). _

PivotTables(sPTNames(i + 1)). _

TableRange2.PrintOut

End If

Next

End If

If bNoneSelected Then

MsgBox "No pivot tables have been selected.", _

vbExclamation

End If

End Sub



348



Chapter 21. The Chart Object

Excel charts are represented by Chart objects in the Excel object model. Since charts are quite

complex, the Chart object is one of the most complicated in the object model.

To set the terminology, Figure 21-1 shows a typical chart that has been labeled with some of the

commonly used chart-related terms.

Figure 21-1. Some chart terminology



Figure 21-2 shows the Chart object and its immediate children.

Figure 21-2. The Chart object



21.1 Chart Objects and ChartObject Objects

349



As you probably know, Excel charts can reside in a special type of sheet called a chart sheet or

they can be embedded in an ordinary worksheet. Accordingly, a Chart object can represent a chart

sheet (standalone chart) or an embedded chart. In the latter case, the Chart object is not contained

directly in a worksheet. Rather, the worksheet contains a ChartObject object that acts as a

container for the Chart object.

Thus, for instance, if we create a new chart using the chart wizard, the fourth step in the wizard

displays the dialog shown in Figure 21-3.

Figure 21-3. Step 4 in the chart wizard



If we choose the "As new sheet" option in step 4 of the chart wizard, we can access the resulting

chart using the code:

Dim c as Chart

Set c = ThisWorkbook.Charts("Chart1")



On the other hand, choosing the "As object in" option in step 4 of the chart wizard, we access the

chart using the code:

Dim c As Chart

Set c = Worksheets("Sheet1").ChartObjects("Chart 1").Chart



Note the space between the word Chart and the number 1 in the name of the ChartObject object,

but not in the name of the Chart object.

We emphasize that there is no ChartSheet object. The Charts property of the Application object

returns a so-called Sheets collection containing one Chart object for each chart sheet. It does not

contain Chart objects for the embedded charts.



21.2 Creating a Chart

We have seen that a PivotTable is created and added to the PivotTables collection by invoking the

PivotTableWizard method. On the other hand, creating a new chart requires a different approach,

since it depends upon whether the chart is standalone (a chart sheet) or embedded in a worksheet

(and thus contained in a ChartObject object).

Also, unlike the PivotTableWizard method, the ChartWizard method does not create a chart; it

merely formats an existing chart. Accordingly, there are three steps required to create a

meaningful chart:



350











Decide whether to create a standalone chart (a chart sheet) or an embedded chart.

Create the standalone chart or embedded chart as described in the following section.

Format the chart using either the ChartWizard method or using individual properties and

methods of the chart object.



21.2.1 Creating Chart Sheets

The Workbook object has a Charts property that returns the Charts collection of all chart sheets in

the workbook. We can use the Add method of the Charts collection to create and add a new

chartsheet to the workbook.

The syntax for the Add method is:



ChartsObject.Add(Before, After, Count)

As usual, this method returns a Chart object. The Before parameter specifies the sheet before

which the new sheet is added, and the After parameter specifies the sheet after which the new

sheet is added. Only one of these parameters can be specified at one time or an error will result. If

neither is set, the new chart is inserted before the active sheet.

The optional Count parameter is an integer that specifies the number of sheets to be added. The

default value is 1.

For example, the following code creates a new chart sheet named "Sales":

Dim ch As Chart

Set ch = ThisWorkbook.charts.Add()

ch.Name = "Sales"



The Add method cannot be used to format the chart. As mentioned earlier, this must be done using

the various properties of the Chart object or the ChartWizard method, discussed later in the

chapter.



21.2.2 Creating Embedded Charts

The Worksheet object also has a ChartObjects property that returns a ChartObjects collection,

which is the collection of all ChartObjects in the worksheet. As we have mentioned, a ChartObject

object is a container for a Chart object—that is, an embedded chart.

The ChartObjects collection has an Add method that is used to create a new embedded chart. The

syntax is:



ChartsObjectObject.Add(Left, Top, Width, Height)

where the required Left and Top parameters give the coordinates of the upper-left corner of the

chart (in points) relative to the upper-left corner of cell A1 on the worksheet, and Width and

Height specify the initial size of the chart (also in points). Recall that the InchesToPoints method

can be used to convert inches to points.

Note that the Add method returns a ChartObject object, rather than a Chart object. This is a bit

confusing, since the method creates both a ChartObject object and the contained Chart object. The

code in Example 21-1 creates a new ChartObject object called ExampleChart along with its

contained Chart object. It positions the chart so that its upper-left corner is three columns from the



351



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Example 20-8. The cmdPrint_Click Event Procedure

Tải bản đầy đủ ngay(0 tr)

×