The Evaluate method can also be used with arrays. The following expression generates a Variant
array with two dimensions, 100 rows and one column, containing the values from 101 to 200. This pro-
cess is carried out more efficiently than using a For...Next loop:
vRowArray = [ROW(101:200)]
Similarly, the following code assigns the values 101 to 200 to the range B1:B100, and again does it more
efficiently than a For...Next loop:
[B1:B100] = [ROW(101:200)]
InputBox
VBA has an InputBox function that provides an easy way to prompt for input data. There is also the
InputBoxmethod of the Applicationobject that produces a very similar dialog box for obtaining data,
but is more powerful. It allows you to control the type of data that must be supplied by the user, and
allows you to detect when the Cancel button is clicked.
If you have an unqualified reference to InputBox in your code, as follows, you are using the VBA
InputBoxfunction:
sAnswer = InputBox(prompt:=”Enter range”)
The user can only type data into the dialog box. It is not possible to point to a cell with the mouse. The
return value from the InputBox function is always a string value, and there is no check on what that
string contains. If the user enters nothing, a zero-length string is returned. If the user clicks the Cancel
button, a zero-length string is also returned. Your code cannot distinguish between no entry and the
result of clicking Cancel.
The following example uses the Application object’s InputBox method to prompt for a range:
vAnswer = Application.InputBox(Prompt:=”Enter range”, Type:=8)
The Type parameter can take the following values, or any sum of the following values if you want to
allow for multiple types.
Value of Type
Meaning
0
Aformula
1
Anumber
2
Text (a string)
4
Alogical value (Trueor False)
8
Acell reference, as a Rangeobject
16
An error value, such as #N/A
64
An array of values
68
Chapter 2: The Application Object
Pdf rotate all 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#
pdf rotate page and save; rotate single page in pdf
Pdf rotate all 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
pdf reverse page order online; rotate individual pdf pages reader
The user can point to cells with the mouse or type in data. If the input is of the wrong type, the InputBox
method displays an error message and prompts for the data again. If the user clicks the Cancel button, the
InputBoxmethod returns a value of False.
If you assign the return value to a Variant, you can check to see if the value is False, for most return
types, to detect a Cancel. If you are prompting for a range, the situation is not so simple. You need to use
code like the following:
Sub GetRange()
Dim rng As Range
On Error Resume Next
Set rng = Application.InputBox(prompt:=”Enter range”, Type:=8)
If rng Is Nothing Then
MsgBox “Operation Cancelled”
Else
rng.Select
End If
End Sub
When you run this code, use the mouse to select the range. The output should look something like
Figure 2-2.
Figure 2-2
The problem is that you must use the Set statement to assign a range object to an object variable. If the
user clicks Cancel and a False value is returned, the Setfails and you get a run-time error. Using the On
Error Resume Nextstatement, you can avoid the run-time error and then check to see if a valid range
was generated. You know that the built-in type checking of the InputBox method ensures a valid range
will be returned if the user clicks OK, so an empty range indicates that Cancel was clicked.
69
Chapter 2: The Application Object
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
NET example for how to delete several defined pages from a PDF document Dim detelePageindexes = New Integer() {1, 3, 5, 7, 9} ' Delete pages. All Rights Reserved
save pdf after rotating pages; rotate pdf page and save
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
doc2.InsertPages(pages, pageIndex) ' Output the new document how to use VB to insert an empty page to a specific location of current PDF file All Rights Reserved
permanently rotate pdf pages; rotate pdf pages individually
StatusBar
The StatusBar property allows you to assign a text string to be displayed at the left-hand side of the
Excel status bar at the bottom of the screen. This is an easy way to keep users informed of progress dur-
ing a lengthy macro operation. It is a good idea to keep users informed, particularly if you have screen
updating turned off and there is no sign of activity on the screen. Even though you have turned off
screen updating, you can still display messages on the status bar.
The following code shows how you can use this technique in a looping procedure:
Sub ShowMessage()
Dim lCounter As Long
For lCounter = 0 To 100000000
If lCounter Mod 1000000 = 0 Then
Application.StatusBar = “Processing Record “ & lCounter
End If
Next lCounter
Application.StatusBar = False
End Sub
At the end of your processing, you must set the StatusBar property to False so that it returns to nor-
mal operation. Otherwise, your last message will stay on the screen.
SendKeys
SendKeysallows you to send keystrokes to the currently active window. It is used to control applica-
tions that do not support any other form of communication, such as DDE (Dynamic Data Exchange) or
OLE. It is generally considered a last-resort technique.
The following example opens the Notepad application, which does not support DDE or OLE, and writes
a line of data to the Notepad document:
Sub SKeys()
Dim dReturnValue As Double
dReturnValue = Shell(“NOTEPAD.EXE”, vbNormalFocus)
AppActivate dReturnValue
Application.SendKeys “Copy Data.xlsx c:\”, True
Application.SendKeys “~”, True
Application.SendKeys “%FABATCH%S”, True
End Sub
SKeysuses Alt+F+Ato perform a File➪SaveAs and enters the filename as BATCHand then enters Alt+S 
to save the text file. The percent symbol (%) is used to represent Alt and the tilde (~) represents Enter. The
caret symbol (^) is used to represent Ctrl, and other special keys are specified by putting their names in
curly braces. For example, the Delete key is represented by {Del}, as shown in the following example.
This example might not execute correctly from the VBE. Run it from the Excel 
window.
70
Chapter 2: The Application Object
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
1. public void DeletePages(int[] pageIndexes). Description: Delete specified pages from the input PDF file. Parameters: All Rights Reserved.
rotate pages in pdf permanently; pdf page order reverse
C# PDF Page Insert Library: insert pages into PDF file in C#.net
how to merge PDF document files by C# code, how to rotate PDF document page to insert empty pages to a specific location of current PDF file. All Rights Reserved
save pdf rotate pages; rotate pdf pages in reader
You can also send keystrokes directly to Excel. The following procedure clears the VBE’s Immediate win-
dow. If you have been experimenting in the Immediate window or using Debug.Print to write to the
Immediate window, it can get cluttered with old information. This procedure switches focus to the
Immediate window and sends Ctrl+a to select all the text in the window. The text is then deleted by
sending Del:
Sub ImmediateWindowClear()
Application.VBE.Windows.Item(“Immediate”).SetFocus
Application.SendKeys “^a”
Application.SendKeys “{Del}”
End Sub
OnTim e
You can use the OnTime method to schedule a macro to run sometime in the future. You need to specify
the date and time for the macro to run, and the name of the macro. If you use the Wait method of the
Applicationobject to pause a macro, all Excel activity, including manual interaction, is suspended. The
advantage of OnTime is that it allows you to return to normal Excel interaction, including running other
macros, while you wait for the scheduled macro to run.
Say you have an open workbook with links to Data.xls, which exists on your network server but is not
currently open. At 3 p.m. you want to update the links to Data.xls. The following example schedules
the RefreshData macro to run at 3 p.m., which is 15:00 hours using a 24-hour clock, on the current day.
Datereturns the current date, and the TimeSerialfunction is used to add the necessary time:
Sub RunOnTime()
Application.OnTime Date + TimeSerial(15, 0, 0), “RefreshData”
End Sub
The following RefreshData macro updates the links to Data.xlsx that exist in ThisWorkbook using
the UpdateLink method. ThisWorkbook is a convenient way to refer to the workbook containing the
macro:
Sub RefreshData()
ThisWorkbook.UpdateLink Name:=”C:\Data.xlsx”, Type:=xlExcelLinks
End Sub
It is worth noting that if you attempt to run this macro when it is currently after 3
p.m., you will receive an error message because you cannot schedule a task to run in
the past. If necessary, change the time to one in the future.
It is necessary for you to have programmatic access to your Visual Basic project for
this macro to work. This can be set from the Excel Ribbon. Select the Developer tab,
select Macro Security, and check the box against Trust access to the VBA project
object model.
71
Chapter 2: The Application Object
VB.NET PDF - WPF PDF Viewer for VB.NET Program
Users can rotate PDF pages, zoom in or zoom out PDF pages and WPF PDF Viewer for VB.NET is a PDF utility annotation rectangle, polygon and so on are all can be
how to change page orientation in pdf document; rotate all pages in pdf file
C# WPF PDF Viewer SDK to view PDF document in C#.NET
Compatible with all Windows systems and supports .NET Framework 2.0 & above versions. A powerful .NET WPF component able to rotate one PDF page or whole PDF
how to rotate a single page in a pdf document; reverse page order pdf
If you want to keep refreshing the data on a regular basis, you can make the macro run itself as follows:
Dim mdteScheduledTime As Date
Sub RefreshData()
ThisWorkbook.UpdateLink Name:=”C:\Data.xlsx”, Type:= xlExcelLinks
mdteScheduledTime = Now + TimeSerial(0, 1, 0)
Application.OnTime mdteScheduledTime, “RefreshData”
End Sub
Sub StopRefresh()
Application.OnTime mdteScheduledTime, “RefreshData”, , False
End Sub
Once you run RefreshData, it will keep scheduling itself to run every minute. In order to stop the
macro, you need to know the scheduled time, so the module-level variable mdteScheduledTime is used
to store the latest scheduled time. StopRefresh sets the fourth parameter of OnTime to Falseto cancel
the scheduled run of RefreshData.
The OnTime method is also useful when you want to introduce a delay in macro processing to allow an
event to occur that is beyond your control. For example, you might want to send data to another applica-
tion through a DDE link and wait for a response from that application before continuing with further
processing. To do this, you would create two macros. The first macro sends the data and schedules the
second macro (which processes the response) to run after sufficient time has passed. The second macro
could keep running itself until it detected a change in the worksheet or the environment caused by the
response from the external application.
OnKey
You can use the OnKey method to assign a macro procedure to a single keystroke or any combination of
Ctrl, Shift, and Alt with another key. You can also use the method to disable key combinations.
The following example shows how to assign the DownTenmacro to the down arrow key. Once
AssignDownhas been run, the down arrow key will run the DownTenmacro and move the cell pointer
down ten rows instead of one:
Sub AssignDown()
Application.OnKey “{Down}”, “DownTen”
End Sub
Sub DownTen()
ActiveCell.Offset(10, 0).Select
When you schedule a macro to run at a future time using the OnTimemethod, you
must make sure that Excel keeps running in memory until the scheduled time
occurs. It is not necessary to leave the workbook containing the OnTime macro open.
Excel will open it, if it needs to.
72
Chapter 2: The Application Object
VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
Compatible with all Windows systems and supports .NET Framework 2.0 & above versions. Able to rotate one PDF page or whole PDF while in viewing.
how to reverse page order in pdf; how to rotate pdf pages and save permanently
C# TIFF: How to Rotate TIFF Using C# Code in .NET Imaging
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB TIFFPage)doc.GetPage(0); page.Rotate(RotateOder.Clockwise90); doc.Save(@"C:\rotate.tif All Rights Reserved
how to rotate one pdf page; how to rotate a page in pdf and save it
End Sub
Sub ClearDown()
Application.OnKey “{Down}”
End Sub
ClearDownreturns the down arrow key to its normal function.
OnKeycan be used to disable existing keyboard shortcuts. You can disable the Ctrl+c shortcut, normally
used to copy, with the following code that assigns a null procedure to the key combination:
Sub StopCopyShortCut()
Application.OnKey “^c”, “”
End Sub
Note that a lowercase c is used. If you used an uppercase C, it would apply to Ctrl+Shift+c. Once again,
you can restore the normal operation of Ctrl+c with the following code:
Sub ClearCopyShortCut()
Application.OnKey “^c”
End Sub
Wor ksheet Funct ions
You can use two sources of built-in functions directly in your Excel VBAcode. One group of functions is
part of the VBA language. The other group of functions is a subset of the Excel worksheet functions.
Excel and the Visual Basic language, in the form of VBA, were not merged until Excel 5. Each system
independently developed its own functions, so there are inevitably some overlaps and conflicts between
the two series of functions. For example, Excel has a DATE function and VBA also has a Datefunction.
The Excel DATE function takes three input arguments (year, month, and day) to generate a specific date.
The VBADate function takes no input arguments and returns the current date from the system clock. In
addition, VBA has a DateSerialfunction that takes the same input arguments as the Excel DATEfunc-
tion and returns the same result as the Excel DATE function. Finally, Excel’s TODAY function takes no
arguments and returns the same result as the VBADate function.
As a general rule, if a VBA function serves the same purpose as an Excel function, the Excel function is
not made directly available to VBA macros (although you can use the Evaluate method to access any
Excel function, as pointed out previously in this chapter). There is also a special case regarding the Excel
MODfunction. MODis not directly available in VBA, but VBAhas a Modoperator that serves the same pur-
pose. The following line of code uses the Evaluate method shortcut and displays the day of the week as
a number, using the Excel MOD function and the Excel TODAY function:
MsgBox [MOD(TODAY(),7)]
The key assignments made with the OnKeymethod apply to all open workbooks and
only persist during the current Excel session.
73
Chapter 2: The Application Object
The same result can be achieved more simply with the VBADatefunction and the Modoperator, as 
follows:
MsgBox Date Mod 7
The Excel CONCATENATE function is also not available in VBA. You can use the concatenation operator (&)
as a substitute, just as you can in an Excel worksheet formula. If you insist on using the CONCATENATE func-
tion in VBA, you can write code like the following:
Sub ConcatenateExample1()
Dim s1 As String, s2 As String
s1 = “Jack “
s2 = “Smith”
MsgBox Evaluate(“CONCATENATE(“”” & s1 & “””,””” & s2 & “””)”)
End Sub
On the other hand, you can avoid being absurd and get the same result with the following code:
Sub ConcatenateExample2()
Dim s1 As String, s2 As String
s1 = “Jack “
s2 = “Smith”
MsgBox s1 & s2
End Sub
The VBA functions, such as DateDateSerial, and IsEmpty, can be used without qualification,
because they are members of <globals>. For example, you can use the following:
StartDate = DateSerial(1999, 6, 1)
The Excel functions, such as VLOOKUP and SUM, are methods of the WorksheetFunction object and are
used with the following syntax:
Total = WorksheetFunction.Sum(Range(“A1:A10”))
For compatibility with Excel 5 and Excel 95, you can use Application rather than
WorksheetFunction:
Total = Application.Sum(Range(“A1:A10”))
For a complete list of the worksheet functions directly available in VBA, see the WorksheetFunction
object in Appendix A.
Caller
The Caller property of the Application object returns a reference to the object that called or executed
a macro procedure. It had a wide range of uses in Excel 5 and Excel 95, where it was used with menus
and controls on dialog sheets. From Excel 97 onward, command bars and ActiveX controls on user forms
have replaced menus and controls on dialog sheets, and the Ribbon and Quick Access Menu have now
replaced command bars. The Caller property does not apply to these new features.
74
Chapter 2: The Application Object
Callerstill applies to the Formstoolbar controls, drawing objects that have macros attached and user-
defined functions. It is particularly useful in determining the cell that called a user-defined function. The
worksheet in Figure 2-3 uses the WorksheetName function to display the name of the worksheet in B2.
Figure 2-3
When used in a function, Application.Caller returns a reference to the cell that called the function,
which is returned as a Range object. The following WorksheetName function uses the Parent property
of the Range object to generate a reference to the Worksheet object containing the Range object. It
assigns the Name property of the Worksheet object to the return value of the function. The Volatile
method of the Application object forces Excel to recalculate the function every time the worksheet is
recalculated, so that if you change the name of the sheet, the new name is displayed by the function:
Function WorksheetName()
Application.Volatile
WorksheetName = Application.Caller.Parent.Name
End Function
It would be a mistake to use the following code in the WorksheetName function:
WorksheetName = ActiveSheet.Name
If a recalculation takes place while a worksheet is active that is different from the one containing the for-
mula, the wrong name will be returned to the cell.
Sum mar y
This chapter highlighted some of the more useful properties and methods of the Application object.
Because Application is used to hold general-purpose functionality that does not fall clearly under
other objects, it is easy to miss some of these very useful capabilities.
75
Chapter 2: The Application Object
The following properties and methods were covered:
ActiveCell: Contains a reference to the active cell.
ActiveChart: Contains a reference to the active chart.
ActivePrinter: Contains a reference to the active printer.
ActiveSheet: Contains a reference to the active worksheet.
ActiveWindow: Contains a reference to the active window.
ActiveWorkbook: Contains a reference to the active workbook.
Caller: Contains reference to the object that called a macro.
DisplayAlerts: Determines whether or not alert dialogs are displayed.
Evaluate: Used to calculate Excel functions and generate Rangeobjects.
InputBox: Used to prompt a user for input.
OnKey: Assigns a macro to a single keystroke, or a combination (with Ctrl, Alt, and so on).
OnTime: Used to set the time for a macro to run.
ScreenUpdating: Determines whether screen updating is turned on or off.
Selection: Contains a reference to the selected range.
SendKeys: Sends keystrokes to the active window.
StatusBar: Allows messages to be displayed on the status bar.
WorksheetFunction: Contains the Excel functions available to VBA.
This is but a small sample of the total number of properties and methods of the Application object—
there are more than 200 of them in Excel 2007. A full list is given in Appendix A.
76
Chapter 2: The Application Object
Wor k book s   an d  W ork s h eets
In this chapter, you learn how to create new Workbook objects and how to interact with the files
that you use to store those workbooks. To do this, some basic utility functions are presented. You
also see how to handle the Sheetobjects within the workbook, and how some important features
must be handled through the Window object. Finally, you learn how to synchronize your work-
sheets as you move from one worksheet to another.
The Wor kbooks Collection
The Workbooks collection consists of all the currently open Workbookobjects in memory. Members
can be added to the Workbooks collection in a number of ways. You can create a new empty work-
book based on the default properties of the Workbook object, or you can create a new workbook
based on a template file. Finally, you can open an existing workbook file.
To create a new empty workbook based on the default workbook, use the Add method of the
Workbookscollection:
Workbooks.Add
The new workbook will be the active workbook, so you can refer to it in the following code as
ActiveWorkbook. If you immediately save the workbook, using the SaveAsmethod, you can give
it a filename that can be used to refer to the workbook in later code, even if it is no longer active.
Before you try the following code, make sure you have a C:\Data directory or change the direc-
tory name used in the code:
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=”C:\Data\SalesData1.xlsx”
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=”C:\Data\SalesData2.xlsx”
Workbooks(“SalesData1.xlsx”).Activate
Documents you may be interested
Documents you may be interested