Excel 2019 Power Programming with VBA. Michael Alexander

Читать онлайн.
Название Excel 2019 Power Programming with VBA
Автор произведения Michael Alexander
Жанр Программы
Серия
Издательство Программы
Год выпуска 0
isbn 9781119514916



Скачать книгу

array consists of four components (as specified by the user-defined data type, CustomerInfo). You can refer to a particular component of the record as follows:

      Customers(1).Company = "Acme Tools" Customers(1).Contact = "Tim Robertson" Customers(1).RegionCode = 3 Customers(1).Sales = 150674.98

      Customers(2) = Customers(1)

      The preceding example is equivalent to the following instruction block:

      Customers(2).Company = Customers(1).Company Customers(2).Contact = Customers(1).Contact Customers(2).RegionCode = Customers(1).RegionCode Customers(2).Sales = Customers(1).Sales

      

Appendix A contains a complete list of VBA functions, with a brief description of each. All are thoroughly described in the VBA Help system.

      TIP

Screenshot of display of a list of Visual Basic for Application functions in Visual Basic Editor.

      You use functions in VBA expressions in much the same way that you use functions in worksheet formulas. Here's a simple procedure that calculates the square root of a variable (using the VBA Sqr function), stores the result in another variable, and then displays the result:

      Sub ShowRoot() Dim MyValue As Double Dim SquareRoot As Double MyValue = 25 SquareRoot = Sqr(MyValue) MsgBox SquareRoot End Sub

      The VBA Sqr function is equivalent to the Excel SQRT worksheet function.

      You can use many (but not all) of Excel's worksheet functions in your VBA code. The WorksheetFunction object, which is contained in the Application object, holds all the worksheet functions that you can call from your VBA procedures.

      To use a worksheet function in a VBA statement, just precede the function name with this:

      Application.WorksheetFunction

      The following example demonstrates how to use an Excel worksheet function in a VBA procedure. Excel's infrequently used ROMAN function converts a decimal number into a Roman numeral.

      Sub ShowRoman() Dim DecValue As Long Dim RomanValue As String DecValue = 1939 RomanValue = Application.WorksheetFunction.Roman(DecValue) MsgBox RomanValue End Sub

      When you execute this procedure, the MsgBox function displays the string MCMXXXIX.

      Keep in mind that you can't use worksheet functions that have an equivalent VBA function. For example, VBA can't access the Excel SQRT worksheet function because VBA has its own version of that function, Sqr. Therefore, the following statement generates an error:

      MsgBox Application.WorksheetFunction.Sqrt(123) 'error

      

In Chapter 5, you will discover that you can use VBA to create custom worksheet functions that work just like Excel's built-in worksheet functions.

      The MsgBox function

      The MsgBox function is one of the most useful VBA functions. Many of the examples in this chapter use this function to display the value of a variable.

      This function often is a good substitute for a simple custom dialog box. It's also a useful debugging tool because you can insert MsgBox functions at any time to pause your code and display the result of a calculation or an assignment.

      Most functions return a single value, which you assign to a variable. The MsgBox function not only returns a value but also displays a dialog box to which the user can respond. The value returned by the MsgBox function represents the user's response to the dialog box. You can use the MsgBox function even when you have no interest in the user's response but want to take advantage of the message display.

      The official syntax of the MsgBox function has five arguments (those in square brackets are optional).

      MsgBox(prompt[, buttons][, title][, helpfile, context])

       prompt: Required. The message displayed in the pop-up display.

       buttons: Optional. A value that specifies which buttons and which icons, if any, appear in the message box. Use built-in constants—for example, vbYesNo.

       title: Optional. The text that appears in the message box's title bar. The default is Microsoft Excel.

       helpfile: Optional. The name of the Help file associated with the message box.

       context: Optional. The context ID of the Help topic, which represents a specific Help topic to display. If you use the context argument, you must also use the helpfile argument.

      You can assign the value returned to a variable, or you can use the function by itself without an assignment statement. This example assigns the result to the variable Ans:

       Dim Ans As Long Ans = MsgBox("Continue?", vbYesNo + vbQuestion, "Tell me") If Ans = vbNo Then Exit SubScreenshot of the exit window of the MsgBox function, with options to continue and radio buttons yes or no.

      Note that we used the sum of two built-in constants (vbYesNo + vbQuestion) for the buttons argument. Using vbYesNo displays two buttons in the message box: one labeled Yes and one labeled No. Adding vbQuestion to the argument also displays a question mark icon. When the first statement is executed, Ans contains one of two values, represented by the constant vbYes or vbNo. In this example, if the user clicks the No button, the procedure ends.

      See Chapter 12, “Leveraging Custom Dialog Boxes,” for more information about the MsgBox function.

      As an Excel programmer, you'll spend a lot of time working with objects and collections. Therefore, you want to know the most efficient ways to write your code to manipulate these objects and collections. VBA offers two important constructs that can simplify working with objects and collections.

       With-End