display pdf winform c# : Save pdf after rotating pages SDK Library API wpf asp.net winforms sharepoint 7053154973-Excel%202007%20VBA%20Programmers%20Reference%20-%20Wrox%20200715-part639

This test works in most cases, and would have worked in the previous example, had it been used.
However, problems can occur if you are testing cells that contain formulas that can produce zero-length
strings, such as the following:
=IF(B2=”Kee”,”Trainee”,””)
The zero-length string test does not distinguish between an empty cell and a zero-length string resulting
from a formula. It is better practice to use the VBAIsEmpty function when testing for an empty cell.
Tr ansferr ing Values between 
Ar rays and Ranges
If you want to process all the data values in a range, it is much more efficient to assign the values to a
VBA array and process the array rather than process the Range object itself. You can then assign the
array back to the range.
You can assign the values in a range to an array very easily, as follows:
vSalesData = Range(“A2:F10000”).Value
The transfer is very fast compared with stepping through the cells one at a time. Note that this is quite
different from creating an object variable referring to the range using:
Set rngSalesData = Range(“A2:F10000”)
When you assign range values to a variable such as vSalesData, the variable must have a Variant
data type. VBA copies all the values in the range to the variable, creating an array with two dimensions.
The first dimension represents the rows and the second dimension represents the columns, so you can
access the values by their row and column numbers in the array. To assign the value in the first row and
second column of the array to sCustomer, use:
sCustomer = vSalesData(1, 2)
When the values in a range are assigned to a Variant, the indexes of the array that is created are always
one-based, not zero-based, regardless of the OptionBasesetting in the declarations section of the mod-
ule. Also, the array always has two dimensions, even if the range has only one row or one column. This
preserves the inherent column and row structure of the worksheet in the array and is an advantage
when you write the array back to the worksheet. 
For example, if you assign the values in A1:A10 to vSalesData, the first element is vSalesData(1,1)
and the last element is vSalesData(10,1). If you assign the values in A1:E1 to vSalesData, the first
element is vSalesData(1,1) and the last element is vSalesData(1,5).
You might want a macro that sums all the Revenues for Kee in the previous example. The following
macro uses the traditional method to directly test and sum the range of data:
118
Chapter 4: Using Ranges
Save pdf after rotating pages - 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#
reverse pdf page order online; how to rotate all pages in pdf
Save pdf after rotating pages - 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 pdf page permanently; rotate pdf pages by degrees
Sub KeeTotal()
Dim dTotal As Double
Dim lRow As Long
‘Specify data range
With Range(“A2:F54”)
‘Loop through rows
For lRow = 1 To .Rows.Count
‘Sum rows for Kee
If .Cells(lRow, 2) = “Kee” Then dTotal = dTotal + .Cells(lRow, 6)
Next lRow
End With
‘Display result
MsgBox “Kee Total = “ & Format(dTotal, “$#,##0”)
End Sub
The following macro does the same job by first assigning the Range values to a Variant and processing
the resulting array. The speed increase is very significant, which can be a great advantage if you are han-
dling large ranges:
Sub KeeTotal2()
Dim vSalesData As Variant
Dim dTotal As Double
Dim lRow As Long
‘Assign range values to variant
vSalesData = Range(“A2:F54”).Value
‘Sum elements of the array
For lRow = 1 To UBound(vSalesData, 1)
If vSalesData(lRow, 2) = “Kee” Then dTotal = dTotal + vSalesData(lRow, 6)
Next lRow
‘Display result
MsgBox “Kee Total = “ & Format(dTotal, “$#,##0”)
End Sub
You can also assign an array of values directly to a Range. Say you want to place a list of numbers in col-
umn G of the RangeObject2.xlsm example, containing a 10% discount on Revenue for customer Kee
only. The following macro, once again, assigns the range values to a Variant for processing:
Sub KeeDiscount()
Dim vSalesData As Variant
Dim vaDiscount() As Variant
Dim i As Long
‘Assign range values to variant
119
Chapter 4: Using Ranges
VB.NET Word: VB.NET Code to Rotate Word Page Within .NET Imaging
Here, we can recommend you VB.NET PDF page rotating tutorial Without losing any original quality during or after the Word page rotating; Save the rotated
pdf rotate page; rotate individual pdf pages reader
VB.NET Image: Image Rotator SDK; .NET Document Image Rotation
rotator control SDK allows developers to save rotated image That is to say, after you run following powerful & profession imaging controls, PDF document, tiff
rotate pdf pages and save; how to rotate one page in a pdf file
vSalesData = Range(“A2:F54”).Value
‘Match output array row count to input row count
ReDim vaDiscount(1 To UBound(vSalesData, 1), 1 To 1)
‘Process data in variant
For i = 1 To UBound(vSalesData, 1)
If vSalesData(i, 2) = “Kee” Then
vaDiscount(i, 1) = vSalesData(i, 6) * 0.1
End If
Next i
‘Write array values to worksheet
Range(“G2”).Resize(UBound(vSalesData, 1), 1).Value = vaDiscount
End Sub
The code sets up a dynamic array called vaDiscount and uses ReDim to give vaDiscount the same
number of rows in vSalesData and one column, so that it retains a two-dimensional structure like a
range, even though there is only one column. After the values have been assigned to vaDiscount,
vaDiscountis directly assigned to the range in columnG. Note that it is necessary to specify the correct
size of the range receiving the values, not just the first cell as in a worksheet copy operation.
The outcome of this operation is shown in Figure 4-15.
Figure 4-15
It is possible to use a one-dimensional array for vaDiscount. However, if you assign the one-dimensional
array to a range, it will be assumed to contain a row of data, not a column. It is possible to get around
120
Chapter 4: Using Ranges
VB.NET Image: Web Image and Document Viewer Creation & Design
and print such documents and images as JPEG, BMP, GIF, PNG, TIFF, PDF, etc. Upload, Open, Save & Download Images & Docs with Web Viewer. After creating a
how to rotate one page in pdf document; pdf reverse page order preview
VB.NET Image: Image Cropping SDK to Cut Out Image, Picture and
of this VB.NET image cropping process: decode the source image file to bitmap, crop bitmap and save cropped bitmap to original image format. After you run this
how to rotate pdf pages and save; rotate pdf pages in reader
this by using the worksheet Transpose function when assigning the array to the range. Say you have
changed the dimensions of vaDiscount as follows:
ReDim vaDiscount(1 To Ubound(vSalesData,1))
You could assign this version of vaDiscount to a column with:
Range(“G2”).Resize(UBound(vSalesData, 1), 1).Value = _                               
WorkSheetFunction.Transpose(vaDiscount)
Deleting Rows
Acommonly asked question is, “What is the best way to delete unneeded rows from a spreadsheet?”
Generally, the requirement is to find the rows that have certain text in a given column and remove those
rows. The best solution depends on how large the spreadsheet is and how many items are likely to be
removed.
Say that you want to remove all the rows that contain the text Mangoes in column C. One way to do this
is to loop through all the rows and test every cell in column C. If you do this, it is better to test the last
row first and work up the worksheet row by row. This is more efficient because Excel does not have to
move any rows up that would later be deleted, which would not be the case if you worked from the top
down. Also, if you work from the top down, you can’t use a simple For...Nextloop counter to keep
track of the row you are on, because as you delete rows, the counter and the row numbers no longer 
correspond:
Sub DeleteRows()
Dim lRow As Long
‘Freeze screen
Application.ScreenUpdating = False
‘Process rows from last data row up to row 1
For lRow = Cells(Rows.Count, “C”).End(xlUp).Row To 1 Step -1
‘Delete rows with Mangoes in C column
If Cells(lRow, “C”).Value = “Mangoes” Then
Cells(lRow, “C”).EntireRow.Delete
End If
Next lRow
End Sub
Agood programming principle to follow is this: If there is an Excel spreadsheet technique you can uti-
lize, it is likely to be more efficient than a VBAemulation of the same technique, such as the
For...Nextloop used here.
Excel VBA programmers, especially when they do not have a strong background in the user interface fea-
tures of Excel, often fall into the trap of writing VBA code to perform tasks that Excel can handle already.
For example, you can write a VBAprocedure to work through a sorted list of items, inserting rows with
subtotals. You can also use VBA to execute the Subtotalmethod of the Rangeobject. The second method
is much easier to code, and it executes in a fraction of the time taken by the looping procedure.
121
Chapter 4: Using Ranges
VB.NET Image: How to Process & Edit Image Using VB.NET Image
Q 2: After I apply various image processing functions to source image file editor control SDK allows developers process target image file and save edited image
pdf rotate pages separately; rotate a pdf page
VB.NET Image: Creating Hotspot Annotation for Visual Basic .NET
hotspot annotation styles before and after its activation img = obj.CreateAnnotation() img.Save(folderName & & profession imaging controls, PDF document, tiff
how to reverse pages in pdf; rotate all pages in pdf preview
However, it isn’t always obvious which Excel technique is the best one to employ. A fairly obvious Excel
contender to locate the cells to be deleted, without having to examine every row using VBA code, is the
Edit➪Find command. The following code uses the Find method to reduce the number of cycles spent
in VBAloops:
Sub DeleteRows2()
Dim rngFoundCell As Range
‘Freeze screen
Application.ScreenUpdating = False
‘Find a cell containing Mangoes
Set rngFoundCell = Range(“C:C”).Find(What:=”Mangoes”)
‘Keep looping until no more cells found
Do Until rngFoundCell Is Nothing
‘Delete found cell row
rngFoundCell.EntireRow.Delete
‘Find next
Set rngFoundCell = Range(“C:C”).FindNext
Loop
End Sub
This code is faster than the first procedure when there are not many rows to be deleted. As the percent-
age increases, the code becomes less efficient. Perhaps you need to look for a better Excel technique.
The fastest way to delete rows that I am aware of is provided by Excel’s AutoFilter feature:
Sub DeleteRows3()
Dim lLastRow As Long       ‘Last row
Dim rng As Range
Dim rngDelete As Range
‘Freeze screen
Application.ScreenUpdating = False
‘Insert dummy row for dummy field name
Rows(1).Insert
‘Insert dummy field name
Range(“C1”).Value = “Temp”
With ActiveSheet
‘Reset Last Cell
It is much better to use VBA to harness the power built into Excel than to reinvent
existing Excel functionality.
122
Chapter 4: Using Ranges
VB.NET Image: VB.NET Code to Add Rubber Stamp Annotation to Image
on image or document files; Able to save created rubber Suitable for VB.NET PDF, Word & TIFF document Method for Drawing Rubber Stamp Annotation. After you have
save pdf rotate pages; pdf rotate single page
VB.NET PDF: VB Code to Create PDF Windows Viewer Using DocImage
What's more, after you have created a basic PDF document viewer in your VB.NET Windows application, more imaging viewer Save current PDF page or the
rotate individual pages in pdf; save pdf after rotating pages
.UsedRange
‘Determine last row
lLastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row
‘Set rng to the C column data rows
Set rng = Range(“C1”, Cells(lLastRow, “C”))
‘Filter the C column to show only the data to be deleted
rng.AutoFilter Field:=1, Criteria1:=”Mangoes”
‘Get reference to the visible cells, including dummy field name
Set rngDelete = rng.SpecialCells(xlCellTypeVisible)
‘Turn off AutoFilter
rng.AutoFilter
‘Delete rows
rngDelete.EntireRow.Delete
‘Reset the last cell
.UsedRange
End With
End Sub
This is a bit more difficult to code, but it is significantly faster than the other methods, no matter how
many rows are to be deleted. To use AutoFilter, you need to have field names at the top of your data.
Adummy row is first inserted above the data, and a dummy field name is supplied for column C. The
AutoFilteris only carried out on column C, which hides all the rows except those that have the text
Mangoes.
The SpecialCells method is used to select only the visible cells in column C, which includes the
dummy field name row. Areference to these rows is assigned to rngDelete. The AutoFilteris turned
off and the rows in rngDelete are deleted.
Sum mar y
This chapter has shown you the most important properties and methods that can be used to manage
ranges of cells in a worksheet. The emphasis was on techniques that are difficult or impossible to dis-
cover using the macro recorder. The properties and methods discussed include the following:
Activatemethod
Cellsproperty
Columnsand Rowsproperties
CurrentRegionproperty
Endproperty
123
Chapter 4: Using Ranges
VB.NET Word: VB.NET Code to Draw and Write Text and Graphics on
After creating text on Word page, users are able doc, fileNameadd, New WordEncoder()) 'save word End powerful & profession imaging controls, PDF document, tiff
rotate pdf page and save; how to rotate all pages in pdf in preview
Offsetproperty
Rangeproperty
Resizeproperty
Selectmethod
SpecialCellsmethod
Unionand Intersectmethods
You also saw how to assign a worksheet range of values to a VBA array for efficient processing, and how
to assign a VBA array of data to a worksheet range.
This chapter also emphasized that it is very rarely necessary to select cells or activate worksheets, which
the macro recorder invariably does because it can only record what you do manually. Activating cells
and worksheets is a very time-consuming process and should be avoided if you want your code to run
at maximum speed.
The final examples showed that it is usually best to utilize Excel’s existing capabilities, tapping into the
Excel object model, rather than to write a VBA-coded equivalent. And bear in mind that some Excel
techniques are better than others. Experimentation might be necessary to get the best code when speed 
is important.
124
Chapter 4: Using Ranges
Us i n g  N ame s
One of the most useful features in Excel is the ability to create names. You can create a name by
selecting the Formulas tab on the Ribbon and clicking the Name Manager button to display the
Name Manager dialog box, shown in Figure 5-1. If the name refers to a range, you can create it by
selecting the range, typing the name into the Name box at the left side of the Formula bar, and
pressing Enter. However, in Excel, names can refer to more than just ranges.
Figure 5-1
Aname can contain a number, text, or a formula. Such a name has no visible location on the work-
sheet and can only be viewed in the Name Manager dialog box. Therefore, you can use names to
store information in a workbook without having to place the data in a worksheet cell. Names can
be declared hidden so they don’t appear in the Name Manager dialog box. This can be a useful
way to keep the stored information from being seen by users.
The normal use of names is to keep track of worksheet ranges. This is particularly useful for tables of
data that vary in size. If you know that a certain name is used to define the range containing the data
you want to work on, your VBA code can be much simpler than it might otherwise be. It is also rela-
tively simple, given a few basic techniques, to change the definition of a name to allow for changes that
you make to the tables in your code.
The Excel object model includes a Names collection and a Name object that can be used in VBA code.
Names can be defined globally, at the workbook level, or they can be local, or worksheet-specific. The
Name Manager dialog box indicates the level of a name under Scope. If you create local names, you can
repeat the same name on more than one worksheet in the workbook. To make a Name object worksheet-
specific, if you are entering it in the Name box, you precede its Name property with the name of the
active worksheet and an exclamation mark. For example, you can type Sheet1!Costs to define a name
Costs that is local to Sheet1, as shown in Figure 5-2.
Figure 5-2
If you create the name using the New button in the Name Manager dialog box, you can select the scope
of the name in the drop-down shown in Figure 5-3.
Figure 5-3
When you select a name using the Name box, you see the global names and those that are local to the
active sheet. When you display the Name Manager dialog box, you see all the names in the workbook.
The local names are identified by the worksheet name under Scope.
126
Chapter 5: Using Names
Agreat source of confusion with names is that they also have names. You need to distinguish between a
Nameobject and the Nameproperty of that object. The following code returns a reference to a Nameobject
in the Namescollection:
Names(“Data”)
If you want to change the Name property of a Nameobject, you use code like the following:
Names(“Data”).Name = “NewData”
Having changed its Name property, you would now refer to this Name object as follows:
Names(“NewData”)
Global names and local names belong to the Names collection associated with the Workbook object. If
you use a reference such as Application.Names or Names, you are referring to the Names collection for
the active workbook. If you use a reference such as Workbooks(“Data.xls”).Names, you are referring
to the Namescollection for that specific workbook.
Local names, but not global names, also belong to the Names collection associated with the WorkSheet
object to which they are local. If you use a reference such as Worksheets(“Sheet1”).Names or
ActiveSheet.Names, you are referring to the local Namescollection for that worksheet.
There is also another way to refer to names that refer to ranges. You can use the Name property of the
Rangeobject. More on this later.
Nam ing Ranges
You can create a global name that refers to a range using the Add method of the Workbook object’s Names
collection:
Names.Add Name:=”Data”, RefersTo:=”=Sheet1!$D$10:$D$12”
It is important to include the equals sign in front of the definition and to make the cell references abso-
lute, using the dollar sign ($). Otherwise, the name will refer to an address relative to the cell address
that was active when the name was defined. You can omit the worksheet reference if you want the name
to refer to the active worksheet:
Names.Add Name:=”Data”, RefersTo:=”=$D$10:$D$12”
If the name already exists, it will be replaced by the new definition.
If you want to create a local name, you can use the following:
Names.Add Name:=”Sheet1!Sales”, RefersTo:=”=Sheet1!$E$10:$E$12”
127
Chapter 5: Using Names
Documents you may be interested
Documents you may be interested