Spreadsheets With Microsoft Excel Module

broken image


  1. Excel Spreadsheet Templates
  2. Spreadsheet With Microsoft Excel Assessment

EInfotree Excel Desktop. Spreadsheets are commonly used in support of critical GxP applications. Examples of these include: Clinical trials. Testing of raw materials, in-process testing, finished goods testing. Manufacturing logs. Start studying Excel Module 1 Study Guide. Learn vocabulary, terms, and more with flashcards, games, and other study tools.

Procedure NameTypeDescription
(Declarations)DeclarationsDeclarations and private variables for the CExcel class.
ActiveWorksheetPropertyGet the name of the active worksheet.
AppExcelPropertyGet a handle to the current instance of Excel so you can set any property directly.
BottomMarginPropertySet the bottom margin of the active worksheet.
CurrentWorkbookPropertyGet a handle to the currently open workbook.
DocumentPropertiesPropertyGet the specified document property.
ExcelCaptionPropertyGet the caption of Excel.
ExcelWindowStatePropertyGet the Excel window state of the active workbook.
LeftFooterPropertyGet the left footer value in the active worksheet.
LeftHeaderPropertyGet the left header value in the active worksheet.
LeftMarginPropertyGet the left margin value in the active worksheet.
PageOrientationPropertyGet the page orientation of the active worksheet.
RightFooterPropertySet the right footer value in the active worksheet.
RightHeaderPropertySet the right header value in the active worksheet.
RightMarginPropertyGet the right margin of the active worksheet.
TopMarginPropertyGet the top margin of the active worksheet.
VisiblePropertySet the visibility of the active worksheet.
WorkbookCaptionPropertyGet the caption of the active workbook. This replaces the name of the Excel file or workbook.
WorkbookWindowStatePropertyGet the window state of the active workbook.
WorksheetNamePropertyGet the current worksheet's name.
ActWinDisplayGridLinesMethodHide or display worksheet gridlines.
ActWinDisplayHeadingsMethodHide or Display Worksheet headings.
ActWinDisplayHorizontalScrollBarMethodHide or Display the Horizontal Scroll Bar.
ActWinDisplayVerticalScrollBarMethodHide or Display the Vertical Scroll Bar.
ActWinDisplayWrkBkTabsMethodHide or Display the Workbook Tabs.
ActWinSetWindowCaptionMethodSet the window caption for the Active Window.
ActWinSetWindowStateMethodSet the window state for the active window.
AppDisplayFormulaBarMethodHide or Display the Formula Bar.
AppDisplayStatusBarMethodHide or Display the Status Bar.
AppSetWindowCaptionMethodSet the window caption for the application.
AppSetWindowStateMethodSet the window state for the application.
CloseExcelMethodClose Excel.
CloseWorkbookMethodClose the current workbook (spreadsheet).
CreatePivotTableMethodCreate a Pivot Table from a data range.
CreateSummaryColumnMethodFor each column, summarize the data based on the summary type.
CreateSummaryRowMethodFor each row, summarize the data based on the summary type.
CreateTableFromAccessMethodGet the contents of an Access table or query into the current document.
CreateTableFromAccessFastMethodGet the contents of an Access table or query into the current document using the CopyRecordset command which is faster than retrieving it record by record. This procedure uses the Excel CopyRecordset method to make the import of Access data almost instantaneous. Use this method if you don't need to modify the data from the recordset as it comes in. If you need to modify records as they come in, see the CreateTableFromAccess() procedure for a recordset-looping version of this code.
CreateWorkbookMethodCreate a new workbook and save it.
CreateWorksheetMethodCreate a new worksheet.
DeleteColumn_ByColumnMethodDelete the column.
DeleteColumn_ByRangeMethodDelete the column(s) by range.
DeleteRow_ByRangeMethodDelete the row(s) by range.
DeleteRow_ByRowMethodDelete the row.
WorksheetNamesMethodGet an array of worksheet names.
WorksheetIndexMethodGet the ID of a Worksheet based on its name while handling the possibility that it doesn't exist.
DeleteWorksheetMethodDelete the specified Worksheet, if it exists.
GetCellAddressMethodConvert the Row/Column to cell address 'A1' format.
ExcelReferenceStylePrivateGet Excel reference style constant.
GetCellFontBold_ByRangeMethodGet the bold font for the cell address or cell range.
GetCellFontBold_ByRowColumnMethodGet the bold font for the row/column.
GetCellFontItalic_ByRangeMethodGet the italic font for the cell address or cell range.
GetCellFontItalic_ByRowColumnMethodGet the italic font for the row/column.
GetCellColor_ByRangeMethodGet the background color for the cell address or cell range.
GetCellColor_ByRowColumnMethodGet the background color for the row/column position.
GetCellFontColor_ByRangeMethodGet the font color for the cell address or cell range.
GetCellFontColor_ByRowColumnMethodGet the font color for the row/column position.
GetCellFontName_ByRangeMethodGet the font name for the cell address or cell range.
GetCellFontName_ByRowColumnMethodGet the font name for the row/column position.
GetCellFontSize_ByRangeMethodGet the font size for the cell address or cell range.
GetCellFontSize_ByRowColumnMethodGet the font size for the row/column position.
GetCellFontUnderline_ByRangeMethodGet the underline font for the cell address or cell range.
GetCellFontUnderline_ByRowColumnMethodGet the underline font for the row/column position.
GetCellFormula_ByRangeMethodGet the formula for the cell address.
GetCellFormula_ByRowColumnMethodGet the formula for the row/column position.
GetCellValue_ByRangeMethodGet the contents of the cell address.
GetRangeAddressMethodGet the cell addresses of a named range.
GetRangeSubAddressMethodGet the cell addresses of a portion of a named range such as a row, column or specific cell.
GetRangeAddress_FirstCellMethodGet the cell addresses of the first cell in the named range.
GetRangeAddress_LastCellMethodGet the cell addresses of the last cell in the named range.
GetRangeAddress_FirstRowMethodGet the cell addresses of the first row of a named range.
GetRangeAddress_LastRowMethodGet the cell addresses of the last row of a named range.
GetRangeAddress_FirstColumnMethodGet the cell addresses of the first column of a named range.
GetRangeAddress_LastColumnMethodGet the cell addresses of the last column of a named range.
GetCellValue_ByRowColumnMethodGet the cell value for the row/column.
InsertColumn_ByColumnMethodInsert a column based on the column position.
InsertColumn_ByRangeMethodInsert a column/group of columns based on the cell address or cell range.
InsertRow_ByRangeMethodInsert a row/group of rows based on the cell address or cell range.
InsertRow_ByRowMethodInsert a row based on the row position.
SetCellValue_ByRangeMethodSet the value for the cell address or range of cells.
SetCellValue_ByRowColumnMethodSet the value for the cell specified by the row and column.
OpenWorkbookMethodOpen the named file and associates it with the class.
OpenWorkbookFromLibMethodOpen the named file and associates it with the class. This version looks in the Excel library folder.
PrintActiveWorksheetMethodPrint the active workbook.
PrintSelectedSheetsMethodPrint the specified worksheets.
SaveCurrentDocumentMethodSave the current document.
SaveCurrentDocumentAsMethodSave the current document with a new name and optional passwords.
SelectDynamicColumnRangeMethodSelect a column range with a variable length.
SelectNamedRangeMethodSelect a named range.
CreateRangeMethodCreate a named range for the specified cells.
SelectRangeMethodSelect a range between two cells.
SelectRange_ByRangeMethodSelect cells based on cell address or cell range.
SelectRange_ByRowColumnMethodSelect a cell based on row/column position.
SetActiveWorksheetMethodMake a worksheet active.
SetCellFontBold_ByRangeMethodSet the bold font for the cell address or cell range.
SetCellFontBold_ByRowColumnMethodSet the bold font for the row/column position.
SetCellFontItalic_ByRangeMethodSet the italic font for the cell address or cell range.
SetCellFontItalic_ByRowColumnMethodSet the italic font for the row/column position.
SetCellColor_ByRangeMethodSet the cell background color for the cell address or cell range.
SetCellColor_ByRowColumnMethodSet the cell background color for the row/column position.
SetCellFontDetailsMethodSet the font name, size, style, and colors for a range of cells.
SetCellFontColor_ByRangeMethodSet the text color for the cell address or cell range.
SetCellNumberFormat_ByRangeMethodSet the number format for the cell address or cell range.
SetCellAlignmentHorizontal_ByRangeMethodSet the horizontal alignment the cell address or cell range.
SetCellAlignmentVertical_ByRangeMethodSet the horizontal and vertical alignment the cell address or cell range.
SetCellFontColor_ByRowColumnMethodSet the text color for the row/column position.
SetCellFontName_ByRangeMethodSet the font name for the cell address or cell range.
SetCellFontName_ByRowColumnMethodSet the font name for the row/column position.
SetCellFontSize_ByRangeMethodSet the font size for the cell address or cell range.
SetCellFontSize_ByRowColumnMethodSet the font size for the row/column position.
SetCellFontUnderline_ByRangeMethodSet the underline font for the cell address or cell range.
SetCellFontUnderline_ByRowColumnMethodSet the underline font for the row/column position.
SetCellFormula_ByRangeMethodSet the formula for all the cells in the range of the active worksheet.
ColumnLetterMethodConvert the column to the letter.
SetColumnWidthMethodSet the column width for one column to a particular width or autofit.
SetColumnWidth_ByRangeMethodSet the column widths to a particular width or autofit.
SetCellFormula_ByRowColumnMethodSet the formula for a cell in the active worksheet.
SortRangeMethodSorts the specified range.
SpellCheckRangeMethodSpell check the specified range of cells.
IsOpenMethodDetermine if Microsoft Excel is already open.
StartExcelMethodStart an instance of Microsoft Excel. Multiple instances of Excel can be opened at one time, or you can have one instance of Excel open with multiple workbooks (spreadsheets) in it.

This is a tutorial about writing code in Excel spreadsheets using Visual Basic for Applications (VBA).

Excel is one of Microsoft's most popular products. In 2016, the CEO of Microsoft said 'Think about a world without Excel. That's just impossible for me.' Well, maybe the world can't think without Excel.

  • In 1996, there were over 30 million users of Microsoft Excel (source).
  • Today, there are an estimated 750 million users of Microsoft Excel. That's a little more than the population of Europe and 25x more users than there were in 1996.

We're one big happy family!

In this tutorial, you'll learn about VBA and how to write code in an Excel spreadsheet using Visual Basic.

Prerequisites

You don't need any prior programming experience to understand this tutorial. However, you will need:

  • Basic to intermediate familiarity with Microsoft Excel
  • If you want to follow along with the VBA examples in this article, you will need access to Microsoft Excel, preferably the latest version (2019) but Excel 2016 and Excel 2013 will work just fine.
  • A willingness to try new things

Learning Objectives

Over the course of this article, you will learn:

  1. What VBA is
  2. Why you would use VBA
  3. How to get set up in Excel to write VBA
  4. How to solve some real-world problems with VBA

Important Concepts

Here are some important concepts that you should be familiar with to fully understand this tutorial.

Objects: Excel is object-oriented, which means everything is an object - the Excel window, the workbook, a sheet, a chart, a cell. VBA allows users to manipulate and perform actions with objects in Excel.

If you don't have any experience with object-oriented programming and this is a brand new concept, take a second to let that sink in!

Procedures: a procedure is a chunk of VBA code, written in the Visual Basic Editor, that accomplishes a task. Sometimes, this is also referred to as a macro (more on macros below). There are two types of procedures:

  • Subroutines: a group of VBA statements that performs one or more actions
  • Functions: a group of VBA statements that performs one or more actions and returns one or more values

Note: you can have functions operating inside of subroutines. You'll see later.

Macros: If you've spent any time learning more advanced Excel functionality, you've probably encountered the concept of a 'macro.' Excel users can record macros, consisting of user commands/keystrokes/clicks, and play them back at lightning speed to accomplish repetitive tasks. Recorded macros generate VBA code, which you can then examine. It's actually quite fun to record a simple macro and then look at the VBA code.

Please keep in mind that sometimes it may be easier and faster to record a macro rather than hand-code a VBA procedure.

For example, maybe you work in project management. Once a week, you have to turn a raw exported report from your project management system into a beautifully formatted, clean report for leadership. You need to format the names of the over-budget projects in bold red text. You could record the formatting changes as a macro and run that whenever you need to make the change.

Visual Basic for Applications is a programming language developed by Microsoft. Each software program in the Microsoft Office suite is bundled with the VBA language at no extra cost. VBA allows Microsoft Office users to create small programs that operate within Microsoft Office software programs.

Think of VBA like a pizza oven within a restaurant. Excel is the restaurant. The kitchen comes with standard commercial appliances, like large refrigerators, stoves, and regular ole' ovens - those are all of Excel's standard features.

But what if you want to make wood-fired pizza? Can't do that in a standard commercial baking oven. VBA is the pizza oven.

Yum.

Because wood-fired pizza is the best!

But seriously.

A lot of people spend a lot of time in Excel as a part of their jobs. Time in Excel moves differently, too. Depending on the circumstances, 10 minutes in Excel can feel like eternity if you're not able to do what you need, or 10 hours can go by very quickly if everything is going great. Which is when you should ask yourself, why on earth am I spending 10 hours in Excel?

Sometimes, those days are inevitable. But if you're spending 8-10 hours everyday in Excel doing repetitive tasks, repeating a lot of the same processes, trying to clean up after other users of the file, or even updating other files after changes are made to the Excel file, a VBA procedure just might be the solution for you.

Microsoft

You should consider using VBA if you need to:

  • Automate repetitive tasks
  • Create easy ways for users to interact with your spreadsheets
  • Manipulate large amounts of data

Developer Tab

To write VBA, you'll need to add the Developer tab to the ribbon, so you'll see the ribbon like this.

To add the Developer tab to the ribbon:

  1. On the File tab, go to Options > Customize Ribbon.
  2. Under Customize the Ribbon and under Main Tabs, select the Developer check box.

After you show the tab, the Developer tab stays visible, unless you clear the check box or have to reinstall Excel. For more information, see Microsoft help documentation.

VBA Editor

Navigate to the Developer Tab, and click the Visual Basic button. A new window will pop up - this is the Visual Basic Editor. For the purposes of this tutorial, you just need to be familiar with the Project Explorer pane and the Property Properties pane.

First, let's create a file for us to play around in.

  1. Open a new Excel file
  2. Save it as a macro-enabled workbook (. xlsm)
  3. Select the Developer tab
  4. Open the VBA Editor

Let's rock and roll with some easy examples to get you writing code in a spreadsheet using Visual Basic.

Example #1: Display a Message when Users Open the Excel Workbook

In the VBA Editor, select Insert -> New Module

Write this code in the Module window (don't paste!):

Sub Auto_Open()
MsgBox ('Welcome to the XYZ Workbook.')
End Sub

Save, close the workbook, and reopen the workbook. This dialog should display.

Ta da!

How is it doing that?

Depending on your familiarity with programming, you may have some guesses. It's not particularly complex, but there's quite a lot going on:

  • Sub (short for 'Subroutine): remember from the beginning, 'a group of VBA statements that performs one or more actions.'
  • Auto_Open: this is the specific subroutine. It automatically runs your code when the Excel file opens - this is the event that triggers the procedure. Auto_Open will only run when the workbook is opened manually; it will not run if the workbook is opened via code from another workbook (Workbook_Open will do that, learn more about the difference between the two).
  • By default, a subroutine's access is public. This means any other module can use this subroutine. All examples in this tutorial will be public subroutines. If needed, you can declare subroutines as private. This may be needed in some situations. Learn more about subroutine access modifiers.
  • msgBox: this is a function - a group of VBA statements that performs one or more actions and returns a value. The returned value is the message 'Welcome to the XYZ Workbook.'

In short, this is a simple subroutine that contains a function.

When could I use this?

Maybe you have a very important file that is accessed infrequently (say, once a quarter), but automatically updated daily by another VBA procedure. When it is accessed, it's by many people in multiple departments, all across the company.

  • Problem: Most of the time when users access the file, they are confused about the purpose of this file (why it exists), how it is updated so often, who maintains it, and how they should interact with it. New hires always have tons of questions, and you have to field these questions over and over and over again.
  • Solution: create a user message that contains a concise answer to each of these frequently answered questions.

Excel Spreadsheet Templates

Real World Examples

  • Use the MsgBox function to display a message when there is any event: user closes an Excel workbook, user prints, a new sheet is added to the workbook, etc.
  • Use the MsgBox function to display a message when a user needs to fulfill a condition before closing an Excel workbook
  • Use the InputBox function to get information from the user

Example #2: Allow User to Execute another Procedure

Spreadsheet With Microsoft Excel Assessment

In the VBA Editor, select Insert -> New Module

Write this code in the Module window (don't paste!):

Sub UserReportQuery()
Dim UserInput As Long
Dim Answer As Integer
UserInput = vbYesNo
Answer = MsgBox('Process the XYZ Report?', UserInput)
If Answer = vbYes Then ProcessReport
End Sub

Sub ProcessReport()
MsgBox ('Thanks for processing the XYZ Report.')
End Sub

Save and navigate back to the Developer tab of Excel and select the 'Button' option. Click on a cell and assign the UserReportQuery macro to the button.

Now click the button. This message should display:

Click 'yes' or hit Enter.

Once again, tada!

Please note that the secondary subroutine, ProcessReport, could be anything. I'll demonstrate more possibilities in example #3. But first...

How is it doing that?

This example builds on the previous example and has quite a few new elements. Let's go over the new stuff:

  • Dim UserInput As Long: Dim is short for 'dimension' and allows you to declare variable names. In this case, UserInput is the variable name and Long is the data type. In plain English, this line means 'Here's a variable called 'UserInput', and it's a Long variable type.'
  • Dim Answer As Integer: declares another variable called 'Answer,' with a data type of Integer. Learn more about data types here.
  • UserInput = vbYesNo: assigns a value to the variable. In this case, vbYesNo, which displays Yes and No buttons. There are many button types, learn more here.
  • Answer = MsgBox('Process the XYZ Report?', UserInput): assigns the value of the variable Answer to be a MsgBox function and the UserInput variable. Yes, a variable within a variable.
  • If Answer = vbYes Then ProcessReport: this is an 'If statement,' a conditional statement, which allows us to say if x is true, then do y. In this case, if the user has selected 'Yes,' then execute the ProcessReport subroutine.

When could I use this?

This could be used in many, many ways. The value and versatility of this functionality is more so defined by what the secondary subroutine does.

For example, maybe you have a file that is used to generate 3 different weekly reports. These reports are formatted in dramatically different ways.

  • Problem: Each time one of these reports needs to be generated, a user opens the file and changes formatting and charts; so on and so forth. This file is being edited extensively at least 3 times per week, and it takes at least 30 minutes each time it's edited.
  • Solution: create 1 button per report type, which automatically reformats the necessary components of the reports and generates the necessary charts.

Real World Examples

  • Create a dialog box for user to automatically populate certain information across multiple sheets
  • Use the InputBox function to get information from the user, which is then populated across multiple sheets

Example #3: Add Numbers to a Range with a For-Next Loop

For loops are very useful if you need to perform repetitive tasks on a specific range of values - arrays or cell ranges. In plain English, a loop says 'for each x, do y.'

In the VBA Editor, select Insert -> New Module

Write this code in the Module window (don't paste!):

Sub LoopExample()
Dim X As Integer
For X = 1 To 100
Range('A' & X).Value = X
Next X
End Sub

Save and navigate back to the Developer tab of Excel and select the Macros button. Run the LoopExample macro.

This should happen:

Etc, until the 100th row.

How is it doing that?

  • Dim X As Integer: declares the variable X as a data type of Integer.
  • For X = 1 To 100: this is the start of the For loop. Simply put, it tells the loop to keep repeating until X = 100. X is the counter. The loop will keep executing until X = 100, execute one last time, and then stop.
  • Range('A' & X).Value = X: this declares the range of the loop and what to put in that range. Since X = 1 initially, the first cell will be A1, at which point the loop will put X into that cell.
  • Next X: this tells the loop to run again

When could I use this?

The For-Next loop is one of the most powerful functionalities of VBA; there are numerous potential use cases. This is a more complex example that would require multiple layers of logic, but it communicates the world of possibilities in For-Next loops.

Maybe you have a list of all products sold at your bakery in Column A, the type of product in Column B (cakes, donuts, or muffins), the cost of ingredients in Column C, and the market average cost of each product type in another sheet.

You need to figure out what should be the retail price of each product. You're thinking it should be the cost of ingredients plus 20%, but also 1.2% under market average if possible. A For-Next loop would allow you to do this type of calculation.

Real World Examples

  • Use a loop with a nested if statement to add specific values to a separate array only if they meet certain conditions
  • Perform mathematical calculations on each value in a range, e.g. calculate additional charges and add them to the value
  • Loop through each character in a string and extract all numbers
  • Randomly select a number of values from an array

Now that we've talked about pizza and muffins and oh-yeah, how to write VBA code in Excel spreadsheets, let's do a learning check. See if you can answer these questions.

  • What is VBA?
  • How do I get set up to start using VBA in Excel?
  • Why and when would you use VBA?
  • What are some problems I could solve with VBA?

If you have a fair idea of how to you could answer these questions, then this was successful.

Whether you're an occasional user or a power user, I hope this tutorial provided useful information about what can be accomplished with just a bit of code in your Excel spreadsheets.

Happy coding!

Learning Resources

  • Excel VBA Programming for Dummies, John Walkenbach

A bit about me

I'm Chloe Tucker, an artist and developer in Portland, Oregon. As a former educator, I'm continuously searching for the intersection of learning and teaching, or technology and art. Reach out to me on Twitter @_chloetucker and check out my website at chloe.dev.





broken image