display pdf in wpf c# : Reverse page order pdf online Library software class asp.net windows html ajax 68847-part565

Figure 16-5: Using a macro to apply colors to columns based on their value
The macro to change the column colors follows:
Sub AdjustChartColors()
Dim Ser As Series
Dim Pt As Point
Dim ColorBins As Range, cell As Range
Dim i As Long
Set Ser = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
For i = 1 To Ser.Points.Count
Ser.Points(i).Interior.ColorIndex = xlNone
For Each cell In Range(“D2:D7”)
If Ser.Values(i) >= cell Then
Ser.Points(i).Interior.ColorIndex = _
cell.Offset(0, 1).Interior.ColorIndex
End If
Next cell
Next i
End Sub
The 
AdjustChartColors
procedure uses two loops. The outer 
For-Next
loop
cycles  through  each 
Point
object.  The  inner 
For  Each-Next
structure  loops
through each cell in the bins range in column D. If the data point is greater than or
equal to the cell value, the 
ColorIndex
property of the 
Interior
object of the
Point
object is set to the corresponding color.
Chapter 16: Using VBA with Charts: Examples
439
Reverse page order pdf online - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
pdf reverse page order online; pdf page order reverse
Reverse page order pdf online - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
rotate pages in pdf expert; how to permanently rotate pdf pages
Setting axis values
Figure 16-6 shows a worksheet with a line chart that uses the data in column A. 
In addition, the sheet  has three named cells: AxisMin (D2), AxisMax (D3), and
MajorUnit (D4). The button executes the following macro, which retrieves the data
in the named cells and uses the values as property settings for the 
Axis
object:
Sub SetAxisValues()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlValue)
.MinimumScale = Range(“AxisMin”)
.MaximumScale = Range(“AxisMax”)
.MajorUnit = Range(“MajorUnit”)
End With
End Sub
Figure 16-6: Using a macro to modify axis settings using values stored in cells
This macro accesses the 
Axes
collection of the 
Chart
object. Using the 
xlValue
argument causes it to use the value axis. As you know, a chart can have additional
axes. The following table shows how to access each of the possible 
Axis
objects in
a chart. Note that specifying 
xlPrimary
as the second argument is optional (if
omitted, 
xlPrimary
is assumed).
440
Part III: Using VBA with Charts
VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.
Support to reverse page order in adobe PDF document in both .NET Enable move, sort and reorder PDF page in preview. Provide online Visual Basic .NET source code.
how to change page orientation in pdf document; pdf rotate pages separately
C# PDF Page Move Library: re-order PDF pages in C#.net, ASP.NET
Free online C# code solutions for sorting PDF page order users to move, sort and reorder all PDF page in preview. Support to reverse page order in PDF document.
rotate individual pdf pages reader; how to rotate page in pdf and save
Axis Type
How to Reference It
Primary Category (X) Axis
Axes(xlCategory, xlPrimary)
Primary Value (Y)( Axis 
Axes(xlValue, xlPrimary)
Secondary Category (X) Axis
Axes(xlCategory, xlSecondary)
Secondary Value (Y) Axis
Axes(xlValue, xlSecondary)
Series Axis
Axes(xlSeriesAxis)
Keep in mind that the properties for an 
Axis
object vary, depending on the type.
For example, a category axis does not have the properties used in the preceding
macro—unless its specified as a time-scale category axis. To make a category axis
a time-scale axis, use a statement like this:
ActiveChart.Axes(xlCategory).CategoryType = xlTimeScale
Other 
CategoryType
settings are 
xlCategoryScale
and 
xlAutomatic
. These
correspond to the options available in the Axes tab of the Chart Options dialog box.
Freezing the text size of chart elements
You’ve probably noticed that the chart elements that display text are set to “auto
scale” by default. When you change  the size of the chart, the text  size adjusts
accordingly. In some cases, this is  a good thing. But  sometimes this  automatic
behavior can be very annoying and force you to do unnecessary editing after resiz-
ing a chart.
To turn off auto font scaling for all chart elements manually, access the Font tab
of the Format Chart Area dialog box and remove the checkmark from the Auto
Scale check box. However, doing this has an undesirable side effect: All text ele-
ments in the chart will have the same font formatting as the chart area!
Oddly, if you use VBA to set the 
AutoScaleFont
property of the 
ChartArea
object to False, this undesirable side effect does not occur. All the chart elements
that contain text will also have their 
AutoScaleFont
property set to False, but their
current font settings will not change.
The 
FreezeTextSize
macro that follows takes advantage of this quirk. It sets
the 
AutoScaleFont
property  of  the 
ChartArea
object  to  False,  and  essentially
freezes the font size of all chart elements that contain text.
Chapter 16: Using VBA with Charts: Examples
441
C# Word: How to Use C# Code to Print Word Document for .NET
document pages in original or reverse order within entire C# Class Code to Print Certain Page(s) of powerful & profession imaging controls, PDF document, image
reverse pdf page order online; rotate pdf page few degrees
Sub FreezeTextSize()
If ActiveChart Is Nothing Then
MsgBox “Select a chart.”
Exit Sub
End If
ActiveChart.ChartArea.AutoScaleFont = False
End Sub
The JWalk Chart Tools add-in,available on the companion CD-ROM,
includes a utility to freeze the text size in charts.
Pasting a semitransparent shape to a series
In Chapter 6, I describe a technique to make chart bars or columns semitransparent
by copying and pasting a shape object. The technique works well but requires sev-
eral steps: Create a shape; format it to make it semitransparent; copy it; paste it to
a chart series; delete the shape. The following macro automates this process.
Sub MakeSeriesTransparent()
Dim TempShape As Shape
Dim TheColor as Double
Dim Ser As Series
Dim BorderLineStyle As Integer
Dim BorderColorIndex As Integer
Dim BorderWeight As Integer
If ActiveChart Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each Ser In ActiveChart.SeriesCollection
If (Ser.ChartType = xlColumnClustered Or _
Ser.ChartType = xlColumnStacked Or _
Ser.ChartType = xlColumnStacked100 Or _
Ser.ChartType = xlBarClustered Or _
Ser.ChartType = xlBarStacked Or _
Ser.ChartType = xlBarStacked100) Then
‘Save the color and border settings
TheColor = Ser.Interior.Color
BorderLineStyle = Ser.Border.LineStyle
BorderColorIndex = Ser.Border.ColorIndex
BorderWeight = Ser.Border.Weight
‘ Create a Shape
Set TempShape = ActiveSheet.Shapes.AddShape _
(msoShapeRectangle, 1, 1, 100, 100)
With TempShape
442
Part III: Using VBA with Charts
.Fill.ForeColor.RGB = TheColor
.Fill.Transparency = 0.4
.Line.Visible = msoFalse
End With
‘ Copy and paste the Shape
TempShape.CopyPicture Appearance:=xlScreen, Format:=xlPicture
With Ser
.Paste
‘Apply saved border settings
.Border.Weight = BorderWeight
.Border.LineStyle = BorderLineStyle
.Border.ColorIndex = BorderColorIndex
End With
TempShape.Delete
End If
Next Ser
End Sub
The 
MakeSeriesTransparent
macro  works  with  the  active  chart  and  loops
through each series. If the series is a bar or column series, it assigns its fill color to
a variable and uses additional variables to remember the border settings for the
series. It then creates a temporary shape object, sets the transparency to 40% and
removes the border, copies the shape, pastes it to the series, applies the stored bor-
der settings, and deletes the shape. This all happens instantly.
Figure 16-7 shows a chart before and after the series were made transparent.
Note that in the bottom chart, the gridlines are visible through the columns.
Figure 16-7: A chart, before and after using the 
MakeSeriesTransparentmacro
Chapter 16: Using VBA with Charts: Examples
443
This macro does not preserve gradients or patterns applied to a series,and
it will overwrite any existing pictures pasted to the series.
Creating Charts with VBA
This section presents methods to create charts using VBA, and also discusses some of
the potential problems that may result when you use recorded macros. VBA provides
two methods to create a chart:
 The Add method of the 
Charts
collection. This is used to add a new
Chart
object (that is, a Chart sheet).
 The 
Add
method of the 
ChartObjects
collection. This is used to add a
new 
ChartObject
(embedded chart).
444
Part III: Using VBA with Charts
Assigning a Macro to a ChartObject
It’s possible to assign a macro to an embedded chart. To do so, Ctrl+click the chart 
(to select the Chart object’s container—a 
ChartObject
object); then, right-click 
and choose Assign Macro from the shortcut menu. This displays the Assign Macro
dialog box, in which you can select the macro to be executed.
After assigning the macro, clicking the embedded chart will execute the macro. If you
assign the macro that follows, for example, clicking the chart will display a message
box that contains the chart’s name (the 
Caller
property returns the name of the
object that called the procedure).
Sub Chart_Click()
Dim ChtName As String
ChtName = Application.Caller
MsgBox “You clicked “ & ChtName
End Sub
Also, be aware that this macro makes it difficult to edit the chart because the chart
isn’t activated when it is clicked. To edit the chart, right-click and choose Edit Chart
Object from the shortcut menu.
Recording a macro
Figure 16-8 shows a simple column chart created from the data in A1:C7. The macro
recorder was turned on when this chart was created, moved, and resized. The fol-
lowing macro is the result:
Sub Macro1()
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets(“Sheet1”).Range(“A1:C7”), _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:=”Sheet1”
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = “Chart Title”
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveChart.HasLegend = False
ActiveSheet.Shapes(“Chart 1”).IncrementLeft -146.25
ActiveSheet.Shapes(“Chart 1”).IncrementTop -58.5
ActiveSheet.Shapes(“Chart 1”).ScaleWidth 0.65, msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes(“Chart 1”).ScaleHeight 0.75, msoFalse,
msoScaleFromTopLeft
End Sub
Figure 16-8: The macro recorder was turned on when this 
chart was created and modified.
Chapter 16: Using VBA with Charts: Examples
445
Executing the recorded macro
You might expect that executing this recorded macro would create an exact copy of
the original chart. In fact, it will create the chart, but you’ll get an error message
when the code attempts to move and resize the chart. The recorded macro accesses
the 
ChartObject
as a shape—and it uses its actual name (Chart 1). When you exe-
cute the macro, the chart object that’s created will not be named Chart 1, and the
macro will end with an error.
Macros  that  create charts  can be  useful,  but  (usually) executing  a  recorded
macro isn’t good enough. For example, you might prefer the chart to use the data
that’s currently selected. The recorded macro “hard codes” the original data range
address.
Writing a macro to create a chart
The goal of this exercise is to write a general-purpose macro that creates a column
chart from the selected data. Furthermore, this macro will delete the legend, add a
title, size the chart to be 300 x 200, and position the chart at the lower-right corner
of the selected range.
The macro that meets these requirements (named 
CreateChart
) follows.
Sub CreateChart()
Dim DataRange As Range
Dim ChtObj As ChartObject
Dim ChtTop As Long, ChtLeft As Long
If TypeName(Selection) <> “Range” Then Exit Sub
Set DataRange = Selection
ChtTop = DataRange.Top + DataRange.Height
ChtLeft = DataRange.Left + DataRange.Width
Set ChtObj = ActiveSheet.ChartObjects.Add(ChtLeft, ChtTop, 300, 200)
With ChtObj.Chart
.ChartType = xlColumnClustered
.SetSourceData Source:=DataRange, PlotBy:=xlColumns
.HasLegend = False
.HasTitle = True
.ChartTitle.Text = “Chart Title”
.Parent.Select
End With
End Sub
The macro starts by declaring five variables that will be used. It then checks to
ensure that a range is selected. If not, the macro ends. The 
DataRange
variable is set
to represent the selected range. Two other variables (
ChtTop
and 
ChtLeft
) store the
top and left coordinates of the new chart. These variables are calculated using the
metrics of the selected range.
446
Part III: Using VBA with Charts
Next, a 
ChartObject
object is added, using the 
Add
method of the 
ChartObjects
collection. Note that the recorded macro used the 
Add
method of the 
Charts
collec-
tion. This added a new Chart sheet, which was eventually relocated to the worksheet.
Adding a new 
ChartObject
is a more efficient approach because you can specify
the size and position (as arguments) when it’s created.
The remainder of the code sets various properties of the 
Chart
object contained
in the 
ChartObject
object. The final statement (
Parent.Select
) selects the created
ChartObject
.
This basic macro can be modified in a number of ways. For example, you can
specify a different chart type, set colors, add or remove gridlines, and so on.
Creating a chart from data on different worksheets
The example in this section uses a workbook that contains five worksheets. The
CreateFiveCharts
macro creates an embedded chart from the data on each sheet.
One slight hitch is that the data in each sheet is not consistent— the sheets vary in
the number of data rows, and each chart needs to use the data in the last row.
Figure 16-9 shows one of the worksheets (the others are similar but have a differ-
ent number of rows).
Figure 16-9: One of five worksheets that will be used 
to create a chart
Although the following macro may seem complicated, it’s really very straight-
forward. It loops through the sheets, creates a chart, and applies several types of cus-
tomizations to the chart. The appropriate objects and properties were determined by
using the macro recorder, and then the recorded code was incorporated into the
macro. In other words, this macro was created in a number of small steps.
Sub CreateFiveCharts()
Dim ChtObj As ChartObject
Dim ChtTop As Long, ChtLeft As Long
Dim ChtHeight As Long, ChtWidth As Long
Dim Sht As Worksheet
Dim LastRow As Long
ChtTop = 1
Chapter 16: Using VBA with Charts: Examples
447
ChtLeft = 1
ChtHeight = 180
ChtWidth = 300
Application.ScreenUpdating = False
For Each Sht In ActiveWorkbook.Worksheets
If Sht.Name <> ActiveSheet.Name Then
LastRow = Sht.Range(“B65536”).End(xlUp).Row
Set ChtObj = ActiveSheet.ChartObjects.Add _
(ChtLeft, ChtTop, ChtWidth, ChtHeight)
‘Add a series
ChtObj.Chart.SeriesCollection.NewSeries
With ChtObj.Chart.SeriesCollection(1)
.Values = Sht.Range(Sht.Cells(LastRow, 2), Sht.Cells(LastRow, 4))
.XValues = Sht.Range(“B3:D3”)
.Interior.ColorIndex = 3
End With
With ChtObj.Chart
‘Specify chart type
.ChartType = xlColumnClustered
‘Adjust the gap width
.ChartGroups(1).GapWidth = 20
‘Remove color from Plot Area
.PlotArea.Interior.ColorIndex = xlNone
‘Set font size
.ChartArea.Font.Size = 9
‘Remove legend
.HasLegend = False
‘Add title
.HasTitle = True
.ChartTitle.Text = Sht.Range(“A1”)
‘Adjust scale
.Axes(xlValue).MinimumScale = 0
.Axes(xlValue).MaximumScale = 120000
‘Modify gridlines
.Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot
End With
ChtTop = ChtTop + ChtHeight
End If
Next Sht
Application.ScreenUpdating = True
End Sub
The macro starts by declaring the variables that are used. The 
ChtTop
variable is
used to position the charts (they are stacked vertically). The code then loops through
each worksheet, but skips the active worksheet (the one that will contain the charts).
448
Part III: Using VBA with Charts
Documents you may be interested
Documents you may be interested