VBA Notes for Professionals

Programming, VBA · notes

Browse all programmation documents

VBA

Notes for ProfessionalsVBA

Notes for Professionals

100+ pages

of professional hints and tricks

GoalKicker.com

Free Programming Books

Disclaimer

This is an unocial free book created for educational purposes and is

not aliated with ocial VBA group(s) or company(s).

All trademarks and registered trademarks are

the property of their respective owners

Contents

About

...................................................................................................................................................................................

1

Chapter 1: Getting started with VBA

...................................................................................................................

2

Section 1.1: Accessing the Visual Basic Editor in Microsoft Oce

Section 1.2: Debugging

Section 1.3: First Module and Hello World

..................................................................................................................................................

...................................................................................................................

.............................................................................

2

Chapter 2: Comments

.................................................................................................................................................

6

Section 2.1: Apostrophe Comments

Section 2.2: REM Comments

.............................................................................................................................

6

........................................................................................................................................

Chapter 3: String Literals - Escaping, non-printable characters and line-continuations

.................................................................................................................................................................................................

Section 3.1: Escaping the " character

Section 3.2: Assigning long string literals

Section 3.3: Using VBA string constants

...........................................................................................................................

....................................................................................................................

7

.....................................................................................................................

7

Chapter 4: VBA Option Keyword

..........................................................................................................................

9

Section 4.1: Option Explicit

Section 4.2: Option Base {0 | 1}

Section 4.3: Option Compare {Binary | Text | Database}

............................................................................................................................................

9

..................................................................................................................................

10

........................................................................................

12

Chapter 5: Declaring Variables

...........................................................................................................................

14

Section 5.1: Type Hints

Section 5.2: Variables

Section 5.3: Constants (Const)

Section 5.4: Declaring Fixed-Length Strings

Section 5.5: When to use a Static variable

Section 5.6: Implicit And Explicit Declaration

Section 5.7: Access Modifiers

................................................................................................................................................

..................................................................................................................................................

...................................................................................................................................

.............................................................................................................

...............................................................................................................

............................................................................................................

22

.....................................................................................................................................

Chapter 6: Declaring and assigning strings

Section 6.1: Assignment to and from a byte array

Section 6.2: Declare a string constant

Section 6.3: Declare a variable-width string variable

Section 6.4: Declare and assign a fixed-width string

Section 6.5: Declare and assign a string array

Section 6.6: Assign specific characters within a string using Mid statement

..................................................................................................

..................................................................................................

......................................................................................................................

..............................................................................................

..............................................................................................

........................................................................................................

........................................................

25

Chapter 7: Concatenating strings

......................................................................................................................

26

Section 7.1: Concatenate an array of strings using the Join function

Section 7.2: Concatenate strings using the & operator

Chapter 8: Frequently used string manipulation

...........................................................................................

.......................................................................................

...................................................................

26

Section 8.1: String manipulation frequently used examples

...................................................................................

27

Chapter 9: Substrings

...............................................................................................................................................

29

Section 9.1: Use Left or Left$ to get the 3 left-most characters in a string

Section 9.2: Use Right or Right$ to get the 3 right-most characters in a string

Section 9.3: Use Mid or Mid$ to get specific characters from within a string

Section 9.4: Use Trim to get a copy of the string without any leading or trailing spaces

...........................................................

...................................................

.......................................................

..................................

29

Chapter 10: Searching within strings for the presence of substrings

.............................................

30

Section 10.1: Use InStr to determine if a string contains a substring

Section 10.2: Use InStrRev to find the position of the last instance of a substring

Section 10.3: Use InStr to find the position of the first instance of a substring

..............................................

30

.....................................................

30

.....................................................................

30

3

4

6

7

7

14

15

18

19

20

22

Advertisement

24

24

24

24

24

24

26

27

29

29

29

Chapter 11: Assigning strings with repeated characters

........................................................................

31

Section 11.1: Use the String function to assign a string with n repeated characters

Section 11.2: Use the String and Space functions to assign an n-character string

.............................................

31

...............................................

31

Chapter 12: Measuring the length of strings

................................................................................................

32

Section 12.1: Use the Len function to determine the number of characters in a string

Section 12.2: Use the LenB function to determine the number of bytes in a string

Section 12.3: Prefer If Len(myString) = 0 Then over If myString = "" Then

.......................................

32

.............................................

.........................................................

Chapter 13: Converting other types to strings

............................................................................................

33

Section 13.1: Use CStr to convert a numeric type to a string

Section 13.2: Use Format to convert and format a numeric type as a string

Section 13.3: Use StrConv to convert a byte-array of single-byte characters to a string

Section 13.4: Implicitly convert a byte array of multi-byte-characters to a string

.......................................................

...................................

33

...............................................

33

..................................................................................

Chapter 14: Date Time Manipulation

................................................................................................................

34

Section 14.1: Calendar

Section 14.2: Base functions

Section 14.3: Extraction functions

Section 14.4: Calculation functions

Section 14.5: Conversion and Creation

..................................................................................................................................................

.......................................................................................................................................

...............................................................................................................................

.............................................................................................................................

......................................................................................................................

39

Chapter 15: Data Types and Limits

...................................................................................................................

41

Section 15.1: Variant

Section 15.2: Boolean

Section 15.3: String

Section 15.4: Byte

Section 15.5: Currency

Section 15.6: Decimal

Section 15.7: Integer

Section 15.8: Long

Section 15.9: Single

Section 15.10: Double

Section 15.11: Date

Section 15.12: LongLong

Section 15.13: LongPtr

.....................................................................................................................................................

..................................................................................................................................................

.......................................................................................................................................................

.........................................................................................................................................................

.................................................................................................................................................

...................................................................................................................................................

....................................................................................................................................................

........................................................................................................................................................

......................................................................................................................................................

...................................................................................................................................................

........................................................................................................................................................

..............................................................................................................................................

46

..................................................................................................................................................

46

Chapter 16: Naming Conventions

.......................................................................................................................

47

Section 16.1: Variable Names

Section 16.2: Procedure Names

Chapter 17: Data Structures

......................................................................................................................................

47

.................................................................................................................................

50

.................................................................................................................................

52

Section 17.1: Linked List

Section 17.2: Binary Tree

...............................................................................................................................................

52

.............................................................................................................................................

53

Chapter 18: Arrays

......................................................................................................................................................

54

........................................................................................................................

54

Section 18.1: Multidimensional Arrays

Section 18.2: Dynamic Arrays (Array Resizing and Dynamic Handling)

Section 18.3: Jagged Arrays (Arrays of Arrays)

Section 18.4: Declaring an Array in VBA

Section 18.5: Use of Split to create an array from a string

Section 18.6: Iterating elements of an array

......................................................................................................

...................................................................................................................

.....................................................................................

.............................................................................................................

...............................................................

59

Chapter 19: Copying, returning and passing arrays

.................................................................................

67

Section 19.1: Passing Arrays to Proceedures

Section 19.2: Copying Arrays

Section 19.3: Returning Arrays from Functions

............................................................................................................

......................................................................................................................................

........................................................................................................

69

32

32

33

33

Advertisement

34

34

36

37

41

42

42

43

44

44

44

44

45

45

45

60

63

64

65

67

67

Chapter 20: Collections

............................................................................................................................................

71

Section 20.1: Getting the Item Count of a Collection

Section 20.2: Determining if a Key or Item Exists in a Collection

Section 20.3: Adding Items to a Collection

Section 20.4: Removing Items From a Collection

Section 20.5: Retrieving Items From a Collection

Section 20.6: Clearing All Items From a Collection

...............................................................................................................

....................................................................................................

....................................................................................................

..................................................................................................

...............................................................................................

71

...........................................................................

71

Chapter 21: Operators

..............................................................................................................................................

77

Section 21.1: Concatenation Operators

Section 21.2: Comparison Operators

Section 21.3: Bitwise \ Logical Operators

Section 21.4: Mathematical Operators

.....................................................................................................................

.........................................................................................................................

..................................................................................................................

79

......................................................................................................................

81

Chapter 22: Sorting

....................................................................................................................................................

82

Section 22.1: Algorithm Implementation - Quick Sort on a One-Dimensional Array

Section 22.2: Using the Excel Library to Sort a One-Dimensional Array

...........................................

82

...............................................................

82

Chapter 23: Flow control structures

.................................................................................................................

85

Section 23.1: For loop

Section 23.2: Select Case

Section 23.3: For Each loop

Section 23.4: Do loop

Section 23.5: While loop

..................................................................................................................................................

............................................................................................................................................

........................................................................................................................................

87

..................................................................................................................................................

..............................................................................................................................................

Chapter 24: Passing Arguments ByRef or ByVal

Section 24.1: Passing Simple Variables ByRef And ByVal

Section 24.2: ByRef

Section 24.3: ByVal

.....................................................................................................................................................

......................................................................................................................................................

.......................................................................................

89

.......................................................................................

89

Chapter 25: Scripting.FileSystemObject

.........................................................................................................

93

...............................................................................................

....................................................................................

...........................................................................................

..................................................................................................

Section 25.1: Retrieve only the path from a file path

Section 25.2: Retrieve just the extension from a file name

Section 25.3: Recursively enumerate folders and files

Section 25.4: Strip file extension from a file name

Section 25.5: Enumerate files in a directory using FileSystemObject

Section 25.6: Creating a FileSystemObject

Section 25.7: Reading a text file using a FileSystemObject

Section 25.8: Creating a text file with FileSystemObject

Section 25.9: Using FSO.BuildPath to build a Full Path from folder path and file name

Section 25.10: Writing to an existing file with FileSystemObject

....................................................................................

.........................................................................................

...............................................................................................................

....................................................................

.............................................................................

97

.....................................

96

72

73

74

75

77

77

85

86

88

88

90

91

93

93

93

94

94

95

95

96

Chapter 26: Working With Files and Directories Without Using FileSystemObject

..................

98

Section 26.1: Determining If Folders and Files Exist

Section 26.2: Creating and Deleting File Folders

.................................................................................................

98

.....................................................................................................

Advertisement

99

Chapter 27: Reading 2GB+ files in binary in VBA and File Hashes

..................................................

100

Section 27.1: This have to be in a Class module, examples later referred as "Random"

Section 27.2: Code for Calculating File Hash in a Standard module

Section 27.3: Calculating all Files Hash from a root Folder

...................................................................

..................................................................................

..................................

100

103

105

Chapter 28: Creating a procedure

...................................................................................................................

109

Section 28.1: Introduction to procedures

Section 28.2: Function With Examples

................................................................................................................

109

....................................................................................................................

109

Chapter 29: Procedure Calls

...............................................................................................................................

111

Section 29.1: This is confusing. Why not just always use parentheses?

Section 29.2: Implicit Call Syntax

.............................................................................................................................

111

..............................................................

111

112

113

117

117

124

124

Section 29.3: Optional Arguments

Section 29.4: Explicit Call Syntax

Section 29.5: Return Values

...........................................................................................................................

112

.............................................................................................................................

.....................................................................................................................................

Chapter 30: Conditional Compilation

.............................................................................................................

114

Section 30.1: Changing code behavior at compile time

Section 30.2: Using Declare Imports that work on all versions of Oce

........................................................................................

114

............................................................

115

Chapter 31: Object-Oriented VBA

.....................................................................................................................

117

Section 31.1: Abstraction

Section 31.2: Encapsulation

Section 31.3: Polymorphism

............................................................................................................................................

......................................................................................................................................

......................................................................................................................................

121

Chapter 32: Creating a Custom Class

Section 32.1: Adding a Property to a Class

Section 32.2: Class module scope, instancing and re-use

Section 32.3: Adding Functionality to a Class

.............................................................................................................

.............................................................................................................

....................................................................................

125

........................................................................................................

125

Chapter 33: Interfaces

...........................................................................................................................................

127

Section 33.1: Multiple Interfaces in One Class - Flyable and Swimable

Section 33.2: Simple Interface - Flyable

..................................................................................................................

128

...............................................................

127

Chapter 34: Recursion

...........................................................................................................................................

130

Section 34.1: Factorials

Section 34.2: Folder Recursion

..............................................................................................................................................

130

.................................................................................................................................

130

Chapter 35: Events

...................................................................................................................................................

132

Section 35.1: Sources and Handlers

Section 35.2: Passing data back to the event source

.........................................................................................................................

132

...........................................................................................

134

Chapter 36: Scripting.Dictionary object

........................................................................................................

136

Section 36.1: Properties and Methods

.....................................................................................................................

136

Chapter 37: Working with ADO

..........................................................................................................................

138

Section 37.1: Making a connection to a data source

Section 37.2: Creating parameterized commands

Section 37.3: Retrieving records with a query

Section 37.4: Executing non-scalar functions

.............................................................................................

138

................................................................................................

........................................................................................................

.........................................................................................................

Chapter 38: Attributes

............................................................................................................................................

142

Section 38.1: VB_PredeclaredId

Section 38.2: VB_[Var]UserMemId

Section 38.3: VB_Exposed

Section 38.4: VB_Description

Section 38.5: VB_Name

Section 38.6: VB_GlobalNameSpace

Section 38.7: VB_Createable

...............................................................................................................................

.........................................................................................................................

........................................................................................................................................

...................................................................................................................................

............................................................................................................................................

......................................................................................................................

144

...................................................................................................................................

145

Advertisement

138

139

141

142

142

143

144

144

Chapter 39: User Forms

.........................................................................................................................................

146

Section 39.1: Best Practices

Section 39.2: Handling QueryClose

......................................................................................................................................

146

.........................................................................................................................

148

Chapter 40: CreateObject vs. GetObject

.....................................................................................................

150

Section 40.1: Demonstrating GetObject and CreateObject

..................................................................................

150

Chapter 41: Non-Latin Characters

...................................................................................................................

151

Section 41.1: Non-Latin Text in VBA Code

Section 41.2: Non-Latin Identifiers and Language Coverage

...............................................................................................................

151

...............................................................................

152

Chapter 42: API Calls

Section 42.1: Mac APIs

..............................................................................................................................................

153

...............................................................................................................................................

153

Section 42.2: Get total monitors and screen resolution

Section 42.3: FTP and Regional APIs

Section 42.4: API declaration and usage

Section 42.5: Windows API - Dedicated Module (1 of 2)

Section 42.6: Windows API - Dedicated Module (2 of 2)

........................................................................................

.......................................................................................................................

................................................................................................................

........................................................................................

.......................................................................................

163

Chapter 43: Automation or Using other applications Libraries

.......................................................

168

Section 43.1: VBScript Regular Expressions

Section 43.2: Scripting File System Object

Section 43.3: Scripting Dictionary object

Section 43.4: Internet Explorer Object

............................................................................................................

168

.............................................................................................................

................................................................................................................

.....................................................................................................................

Chapter 44: Macro security and signing of VBA-projects/-modules

...........................................

173

Section 44.1: Create a valid digital self-signed certificate SELFCERT.EXE

..........................................................

173

Chapter 45: VBA Run-Time Errors

...................................................................................................................

183

Section 45.1: Run-time error '6': Overflow

Section 45.2: Run-time error '9': Subscript out of range

Section 45.3: Run-time error '13': Type mismatch

Section 45.4: Run-time error '91': Object variable or With block variable not set

Section 45.5: Run-time error '20': Resume without error

Section 45.6: Run-time error '3': Return without GoSub

...............................................................................................................

.......................................................................................

..................................................................................................

......................................................................................

........................................................................................

..............................................

184

Chapter 46: Error Handling

.................................................................................................................................

188

Section 46.1: Avoiding error conditions

Section 46.2: Custom Errors

Section 46.3: Resume keyword

Section 46.4: On Error statement

.....................................................................................................................................

................................................................................................................................

............................................................................................................................

...................................................................................................................

188

Credits

............................................................................................................................................................................

194

You may also like

......................................................................................................................................................

196

153

154

157

159

169

169

170

183

183

184

185

186

188

189

191

About

Please feel free to share this PDF with anyone for free,

latest version of this book can be downloaded from:

https://goalkicker.com/VBABook

This VBA Notes for Professionals book is compiled from Stack Overflow

Documentation, the content is written by the beautiful people at Stack Overflow.

Text content is released under Creative Commons BY-SA, see credits at the end

of this book whom contributed to the various chapters. Images may be copyright

of their respective owners unless otherwise specified

This is an unofficial free book created for educational purposes and is not

affiliated with official VBA group(s) or company(s) nor Stack Overflow. All

trademarks and registered trademarks are the property of their respective

company owners

The information presented in this book is not guaranteed to be correct nor

accurate, use at your own risk

Please send feedback and corrections to [email protected]

GoalKicker.com – VBA Notes for Professionals

1

Chapter 1: Getting started with VBA

Version

Vba6