949 Steps to 6 Figures by Learning Excel-VBA and Other Skills



Table of Contents



Introduction

Chapter 1-Learning Techniques
1.Learn the Terms
2.Acronyms
3.Learn via Immediate Window
4.Learn via Macro recorder
5.Learning by stepping through code🔝
6.Learn to Juggle
7.Self Learning
8.Learn via sample code
9.do one then do many
10.Small to big, one piece at a time
11.Learn by going from small to big
12.Download website code
13.List of terms to know
14.You Don't Have to Understand Everything
15.Many ways to skin a cat

Chapter 2-Basic Concepts
16.Copy
17.Hidden
18.Visible - basic
19.Default
20.Syntax
21.Active
22.Rows - basic
23.VBA is a programming language, syntax
24.Constants
25.vbCRLF
26.vbCR
27.vbNullChar
28.vbTab

Chapter 3-Excel Knowledge
29.Excel Knowledge Overview
30. Basic Excel Functions to Know
31.Assignment stmt
32.Columns(1).select - selects a column
33.Selection.EntireColumn.Hidden = True ' recorded
34.Activecell.Column
35.Activecell.Row
36.Rows, Columns and Cells
37.Selection.Insert Shift:=xlToRight - recorded
38.Columns("A:P").clear
39.Insert a column - Columns(lCol).EntireColumn.Insert ' recorded

Chapter 4-Cells
40.cells - basic
41.Range vs. Cells
42.Range("A1:" & Cells(r,c).Address).Copy
43.ranges - "A1" "A1:C4" range_name
44.Cells.Rows.Count
45.Value vs. formula
46.Rows("1:1").select 'a row
47.Rows collection
48.Selection.Address - vb property - returns the $A$1 formatted address of the selected cell(s)

Chapter 5-Sheets
49.xl vs. VBA ranges
50.Sheets aka WorkSheets
51.sheets vs. worksheets collection?
52.Collections
53.Sheets Collection
54.ActiveSheet.name
55.CreateSheet "name" - adds a new sheet and deletes current one??? udf
56.ActiveWindow.SelectedSheets.Delete - recorded to delete multiple sheets (displayalerts=false) to turn off warning
57.Create sheets from a list

Chapter 6-Workbooks
58.Workbooks Collection
59.ActiveWorkbook.SaveAs sFile
60.ActiveWorkbook.Save
61.SaveCopyAs
62.ActiveWorkbook.SaveCopyAs sFile
63.Workbooks.Open
64.Workbook_open - event
65.Using Multiple Workbooks
66.WorkBooks.Open sFileout, UpdateLinks:=False
67.set wb = ActiveWorkbook
68.Workbooks(sWB).Close False
69.Windows(sWB).Activate
70.Setting Sheet
71.Sheets(2).visible = True
72.Sheets.count
73.Sheet names have size and character limitations
74.ActiveSheet.Copy After:=Workbooks(sMainWBK).Sheets(Sheets.count)
75.Create sheets from a list
76.Delete a Sheet - turn off displayalerts before delete (sh.delete)
77.ActiveWorkbook after opening an excel file
78.WorkBook
79.ActiveWorkbook.Close False
80.Activeworkbook.name
81.ThisWorkbook
82.Workbooks Collection
83.ThisWorkbook.Sheets(....).Range(....) ' use when a different sheet is active
84.VBA on 2 or more Excel files opened at the same time

Chapter 7-Getting Started with Macros
85.Developer Ribbon
86.Switching between xl and VBA and back
87.What you can record and what you can't (loops, decisions, flexibility)
88.Hello World!
89.Code indenting
90._ - continuation character
91.VB or Visual Basic Editor
92.The 4 Main VBE Windows and the Rest
93.autocomplete
94.Create syntax error to save a location you want to go back to
95.Colors in vb Editor - Green - comment - blue Excel statement ; red = syntax error
96.Ctrl Shift F2 - Go back to previous routine in VB editor
97.Recording a Macro and Generalizing it
98.Introduction to the Macro Recorder
99.Macro Security
100.Learn by using the Macro recorder
101.Finding the Macro being Recorded
102.Macro recorder hardcode removal
103.Activecell.formulaR1C1 = .... - code from macro recorder
104.Activecell.FormulatR1C1
105.Debugging with Msgbox's
106.Using the Macro Recorder
107.Debugger
108.Holding the shift key when excel starts stops macros from running
109.Understanding someone else's vba code🔝

Chapter 8-String Processing
110.Strings, Numbers and Variables
111.Option Explicit
112.as String
113.Public or Global variables
114.as Integer
115.Scope of variables
116.Private scope
117.Module variable scope
118.Static variable
119.Naming convention
120.Strings
121.Left(sting,len)
122.Right(string,n) - string function
123.Mid - Extract data from a string
124.Mid(string,start[,end]) - string function
125.Dim lStart as Long, lGo as Long, ..
126.Dim sFile$, sZipfile, test as string
127.Dim SpecialPath As String
128.instr(lcase(..) )
129.instr( ) - string function
130.Trim - function string removed leading a trailing characters
131.LTrim - VBA func
132.Space$(512)
133.Selection.Replace what:="#N/A", Replacement:="0", LookAt... 'Recorded
134.Replace
135.& - Concatenation
136." - "" - using quotes in a string
137.Concatenate a string to create a range
138.range(cl(c+1) & fr & ":" & cl(c+1) & r).select
139.Len(string) - vba function
140.Asc( ) - VBA string func converts s to a number
141.ActiveCell.Address
142.RemoveLastComma
143.Cells.Clear - Clear all cells
144.Regular Expressions (see Save as PDF)
145.lcase
146.RTrim - VBA func
147.Ucase
148.Replace

Chapter 9-Excel Functions
149.=subtotal xl func
150.=vlookup (xl func)
151.=if
152.=ifna (xl func)
153.=search
154.Return a value from a function
155.Function returning a value
156.Return multiple values from a function by returning a comma separated sting and parsing the results
157.Using fx to understand a formula
158.=match xl

Chapter 10-Cells
159.Activecell.formulaR1C1 =
160.Cells(i,j).Text
161.Activecell.formula

Chapter 11-VBA Statements
162.Variables
163.Global variables and variable scope
164.Constants - Const SW_SHOW = 1
165.Load cell value to a vba variable
166.Function -
167.nested functions replace(replace(sURL,
168.Select Case - vba stmt
169.GoTo
170.gotolabel:
171.Gosub routine_name
172.=
173.<> - not equal, condition
174.As Worksheet
175.Call routine_name ' call is optional but clearer to new users
176.[=subtotal(3,A:A)-1]

Chapter 12-Selecting
177.Range(selection, selection.End(xlDown)).Select - select area - recorded
178.Selection.End(xlUp).select ' recorded
179.Sheets("name").select - selects a sheet
180.ActiveCell.Offset(1,0).select
181.AddBorders
182.Quit - Application.Quit
183.SelectPartialSheetName - I wouldn't know the whole name of a sheet but knew part of it's name
184.Select a column - Columns(i).select

Chapter 13-Formatting
185.Formatting Routines
186.Selection.NumberFormat = "mmm-yy"
187.Selection.Numberformat = "#,##0.0,,,"
188.Columns.("A:E").EntireColumn.AutoFit
189.Rows("9:34").EntireRow.AutoFit
190.format
191.ActiveWindow.FreezePanes = True/False
192.format(lVersion,"000")
193.activecell.MergeArea
194.MergeCells
195.Selection.Merge
196.FixXYZFormat - the format of data needed to be fixed to a format that the code could process
197.Format dates
198.Footer
199.HighlightTotalRow
200.Selection.NumberFormat = "m/d/yyyy"
201.Seletction.Style = "Percent" ' recorded
202.displaycolumns - udf
203.Columns("A:A").ColumnWidth = 7.43 - recorded
204.Collapse/Expand outline
205.ActiveSheet.Outline.ShowLevels RowLevels:=1, ColumnLevels:=1 ' recorded
206.Autofit
207.Borders - Record the code
208.formatting routines - almost all are recorded and modified
209.Rows("1:1").RowHeight = 52.5 ' recorded
210.Columns("H:I").NumberFormat = "#,##0"
211.Selection.Font.Underline = xlUnderlinestyleSingle
212.Outline/Group/Ungroup data
213.s,Selection.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ::-""??_);_(@_)" 'recorded (g)
214.Selection.WrapText = False ' recorded
215.Formatcols - Format the excel while recording
216.FormatXyz - udf - to format data usually via recorded code,

Chapter 14-Filtering with VBA
217.WorksheetFunction.Min( ) I use application.evaluate
218.Clear Filters Without Removing Them
219.GetNextRow - filtering udf
220.ActiveWorkbook.Worksheets("....").Autofilter.sort.sortfileds.clear ' clears a filters sorting ' recorded
221.Selection.autofilter = turns off filter
222.Hidden property
223.Subscript out of range
224.Cells.autofilter field=lCol, Criteria1:="=*CCRT*", Operate:=xlOr, Criteria2:="IBOR*"
225.Cells.autofilter field=lCol, Criteria1:="=*IBM*", Operate:=xlOr, Criteria2:="Sales*"
226.Remove filtered data but keep filters
227.Public gsFilters() As Filter_fields 'Filter fields is a udt
228.AutoFilterMode
229.Filter Problems copying moving...
230.range(...).Autofilter Field:=1, criteria1:="=" & sValue, Operator:=xlAnd = recorded sets a filter
231.Filtering and visible rows
232.Rows(i).hidden

Chapter 15-Looping or Repeating Statements
233.Loop
234.Do While - Loop
235.for k = 1 to 12 step 3 ' loop
236.for z = len(sSQL) to 1 step -1
237.exit for ' prematurely exit from a for loop
238.GoTo next_for
239.next_one:
240.For Loop
241.Do Until n = 0
242.While Not EOF(1) ... Wend - loop
243.Exit Do
244.Do - Loop ' no while needs Exit Do
245.Exiting loops
246.nested for loops
247.Goto Loop
248.For each (loop) item in collection
249.Next
250.Doevents '

Chapter 16-Data Types
251.as Variant
252.As Long
253.as Single
254.as Range
255.As Object
256.As Boolean ... True/False
257.As Byte
258.As Excel.Range
259.Type fiilter_Fields row as Long column as Long End Type

Chapter 17-Commonly Used Routines
260.RunProgram "http.." (File Associations need to set up)
261.Findlastrow - udf - finds the last row in a column
262.Findlastrow - udf - finds the last row in a column
263.FindDataCol("fieldname",row_nbr) udf
264.ColumnLetter - udf - converts a column # to a column letter
265.FindDataRow("string",col_nbr)
266.FindDataCol - udf - 🔝
267.FindLastCol(1) - find the last column passed a row udf

Chapter 18-Projects
268.Convert a Name from Last, First to First Last
269.Open Websites and Files
270. Add a Table of Contents or Summary Sheet
271.AutoSort
272.Create a Sheet with a number of columns to run queries and process Excel output
273.Birthday Problem

Chapter 19-Excel Objects, Properties, Methods, Collections and Events
274.Properties
275.Events
276.Workbook_close - event
277.Methods
278.Default property
279.Workbooks(thisworkbook.name).sheets("xxxx").Range("DER_cc") ' get the range name in another workbook
280.Workbooks(sWBK).Sheets("CPR_LIst").Range("portfolio")
281.beforeSave
282..Select
283.Selection. (formula, copy)
284.ActiveCell.Offset(1,0).Address
285.Selection.Rows.Count
286.ExcelInstances
287.Is Nothing - Objects?
288.Objects

Chapter 20-The Clipboard
289.Clipboard routines - Set and copy to clipboard (plan2020 has this)
290.Paste
291.range("range_name").copy
292.Relative vs. Absolute Address $A$1 vs. A$1 vs. $A1 vs. A1 -
293.Clipboard routines
294.Selection.Pastespecial Paste:=xlPasteValues... 'recorded
295.Pastespecial pasteformats
296.Activesheet.paste
297.Selection.cut - Clipboard
298.Application.CutCopyMode = False - gets rid of crawling ants
299.Sheets(Array("sheet1","sheet2").copy
300.Clipboard - basic
301.Copy Transpose
302..Copy
303.Selection.copy
304.Selection.Copy - copies the active selection to the clipboard
305.Selection.PasteSpecial ... ' recorded
306.ClearClipboard - udf - Report Engine
307.selection.PasteSpecial Paste:=xlPasteColumnWidths, ..' recorded

Chapter 21-Dates and Time
308.Now() - returns the date time
309.IsDate(string_field)
310.GTODList(sStype, aOffsets) - date Get Type of Date list format "3,6,12,15" a list of prev offsets
311.LBDOM - dates - udf - Last Business Date of the Month
312.Month(vdate)
313.Year(vDate)
314.Second(now())
315.DateValue("1/2/2020")
316.End of Month issue - two system used different month-end dates problem
317.GTODList(type, string of offesets - ex. "0,1,2,3,6,9,12"
318.Timezones
319.Last_day_of_prev_month
320.Last_day_of_month
321.fdom - first day of month -date udf
322.CVDate(string_field)
323.DateAdd("s",Seconds, Now)
324.Date = #1/4/2021#
325.IsBizDay(vDate)
326.Date formatting yyyy-mmm-dd
327.IsDate(string_field)
328.NBizDays(startDate,n)
329.If Day(Now()) <= 19 then
330.Weekday - dates
331.GTOD - GetTypeOfDate - e e-system C c-system
332.DateAdd("m", -1, vDate))
333.Folders

Chapter 22-Files
334.ChDir - Files
335.Get File Name Example
336.ActiveWorkbook.FullName
337.FileDateTime(sFileName)
338.All About Files
339.Copy Files
340.Creating a folder
341.ReadOnly
342.Mkdir - files - creates a new directory
343.Dir - files - process a directory or check if a file exists
344.OpenDQFile - udf to open the Data Quality file from web/sharepoint and unzip it
345.Open iniFile For Input As 1
346.SaveStringtoFile string, "c:\xyz.txt" - saves a string to a file
347.SetAttr
348.bOpenSeqFile(sFile,"A") ' "O" output "I" input
349.Open .. for binary access
350.GetFileName(fullpath) - returns the file name without directory
351.Do While Not EOF(x)
352.LoadFileToString(sFile) - udf
353.FileLen(sFile) - gets the length of the file
354.FileCopy from, to
355.Use file name to denote something like "-quick" isn't the full result
356.View a directory ' runprogram on the Sharepoint directory name
357.Freefile
358.Scripting.FileSystemObject"
359.FilesSystemObject.CopyFile sfrom, sTo
360.Dim FileSystemObject As New FileSystemObject
361.Print #x,string
362.set fso = CreateObject("scripting.filesystemobject")
363.\\ ' network file prefix
364.GetVersionForECMTemplates - goes thru a directory and get the last mod and size of each file
365.Err = 53 ' file not found
366.GetLastSlash(s) - File
367.Show directory via File Explorer - RunProgram "C:\directory_name
368.FileDateTime(sFileName)
369.UnzipAFile(file,directory)
370.udf - CreateMultipleDirectorys from a list (files)
371.Walk a file - get all files in a directory
372.CreateDir
373.AddFinalSlash - udf - files
374.XML File format
375.txt files
376.Line Input #x, sData
377.Close #x ' Close a seq file
378.LoadData(sFile) - udf - loads a file's data to a string
379.vFileLen(sFile) ' udf to create an excel function to get the filelength
380.kill - delete a file
381.How to write a function to open a zip file when the file sometimes is zip and sometimes xlsb
382.\ as a folder separator
383.SeqIO.bas
384.dir(filename) = ""
385.File wildcard character * or ?
386.Error File in use
387.a filename can't use certain characters line "/" so change it if creating it from data
388.elseif err = 75 then ' directory already exists?
389.tab delimited file
390.SaveStringToFile - udf 🔝
391.File suffix - zip, xlsb, txt, xls, xlsx, xlsm, pdf, htm, html
392.GetFileCreator - internet - used shell to get the name

Chapter 23-Macros to Record
393.Convert to Values via Paste Special
394.Application.Autocorrect ' record

Chapter 24-API - Application Programming Interface
395.Declaring APIs
396.Ptrsafe
397.API - Public Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA(ByVal hWnd As Long, ...
398.32 bit vs. 64 bit
399.API - Public Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
400.Sleep - api
401.#If Win64 Then Declare PtrSafe .(old 32 bit declare) #else Declare ...(old 32 bit declare) #end if

Chapter 25-Excel via VBA
402.application.evaluate(sLookup) - runs a vlookup or match or other excel statemnt
403.WorksheetFunction.Min
404.Delete Cells, Rows or Columns
405.=match xl
406.Selection.Delete Shift:=xlUp ' recorded

Chapter 26-Data Analysis and Verification
407.Data_validation(sParms) - used for autorun receive request and run a macro
408.Select a cell - Range(...).select
409.align_ok_key(lKeyCol1 as Long, range1, lkeyCol2 as long, range2) - udf - 🔝 Aligns data from 2 sources
410.CompareTwoFiles() - udf
411.GetStats - udf

Chapter 27-Database and SQL
412.SQL
413.If gADO is Nothing then
414.Connection Sting
415.GetConnection - udf - db
416.Set gADO = GetConnection(GetDatasource())
417.Set gADO = GetConnection(GetDatasource())
418.SQL insert
419.Recordsets
420.vntResult = rs(0)
421.Set rs = nothing
422.rs.Close
423.rs.fields(i).name
424.for i = 0 to rs.Fields.Count - 1
425.Workspace.OpenConnection
426.public gADO As ADODB.Connection
427.GetDataSource - udf - db
428.check_include - udf db implements sql include logic
429.ODBC Dialog
430.As DAO.Recordset
431.QF - db -udf - Query Fix to replace an odd # of quotes with even number to stop sql injection attack (security)
432.CheckForUnadjustedSQL(sSQL, sNote) - udf db looked at SQL and searched for a table that shouldn't be used
433.SQL drop
434.check_include(sSQL,"") - udf db
435.WildCardSelect(...) - db - udf - adds fields to select query based on wildcards - cool
436.LoadListBox(c as object, sSQL as String) - db - udf -
437.RetrieveDataToSheet - udf - db
438.If cn.State = adStateOpen then ' db
439.SQL update
440.Run SQL and save output to a sequential file
441.Dim rs as New ADODB.Recordset
442.SQL delete
443.WhatDB() - udf - queries the gADO.Properties(9) and if an error occurs returns "Not Connected"
444.ODBC
445.RealGo - udf db - detmine if a go in sql is the real one
446.ProcessSQL(sSQL, sSheet, optional sProcess
447.UseProductionDB vs. UseTestDB - udf - that set a global
448.CreateQueryTable - db -
449.SQL insert rows from data
450.LogSQLError -
451.RemoveSQLComments - udf
452.runquery2 - udf - runs a query that returns 2 values
453.GetSystemVar - udf - db - Retrieves a System Variable from a table
454.SQLStuff.bas
455.GetRecodset (sSQL, Optional maxRecords) as ADODB.Recordset '
456.SQL Create
457.SECDataAvailable - udf - db - checks for a condition (cob date from db > month-end data) and send email, generates a file
458.Run a query sample
459.RunSQLFromFile - udf - db 🔝
460.SQL truncate
461.Normalized Forms - db
462.InitDB - udf to initialize a database
463.OpenRecordset
464.If rs.EOF then
465.rs.MoveNext
466.RunQuery( ) - udf db - runs a query that returns 1 value and not a recordset
467.RunSQLFromFile - udf - db 🔝
468.ProcessSQL - udf - very important 🔝
469.RunTheQuery - udf - db
470.AddSemicolon - db - udf - adds a semicolon to the end of a string if one doesn't exist or to beginning as it's a comment
471.Using Database Views
472.if Error = "[Microsoft] [ODBC Driver Manager] Data source..." Then after set gADO and ask to install driver
473.Load_Collateral_values_toDB
474.Embed a query in a function or sub
475.GetDataSource - udf - db
476.LoadQueryToString - udf - db
477.SQL - Check return from query
478.Insert_to_dataissues_click - Loop thru data on sheet and insert it to a table
479.AddFieldToDB (sfield, sTable, stype)
480.LoadSQLtoSheet
481.if rs.fields.count = 1 then
482.reference value in an array aSuffixes(i)
483.Project: SQL UI

Chapter 28-Arrays
484.LoadArray
485.LoadArray(workbookname, Sheetname, header) 🔝
486.For loop - lbound ubound
487.Redim Preserve a(r -2)
488.Array -start with "a", array function
489.Dim a() as string
490.Run SQL from a file
491.DropFieldFromdb - udf
492.Split(string,"value") - converts string into an array
493.for i = Lbound(a) to UBound(a)
494.Array(string, string, ....) - Converts a list of strings to an array
495.Ubound(array) - finds the upper bound of an array
496.Option Base 1
497.InArray(array, the_value)
498.IsArrayEmpty - udf Report Engine
499.Large Arrays - Interview Question
500.Arrays vs. Collections
501.InArray(array,value) - determines if value is in the array - udf
502.Erase ... vba erase (g)

Chapter 29-Batch Jobs
503.auto_open
504.Run "Thisworkbook.WorkBook_Open"
505.Do While (now < vStopTime) and gbStop = False
506.Application.IgnoreRemoteRequests
507.Application.Ontime Dateadd("n",30, Now(),"Sub_to_run_name" ' i
508.Windows Job Scheduler
509.GenerateAllExcelAndDecks - batch - run multiple SQL's and Creates multiple PPT decks
510.StatusBar
511.GetCommandLine() - udf
512.Blink Excel Caption - batch
513.CheckDatabase - udf
514.Application.AskToUpdateLinks = false
515.IsDataAvailable
516.Delay 2 = udf
517.GetParameters - udf - Report engine
518.Logautorun - udf
519.auto_open - udf
520.Wait until a file appears
521.IsAutorun() - udf looks at the filename if has the name autorun then set flag to true

Chapter 30-Web/Internet
522.Hyperlinks
523.HTML
524.Set IE = New InternetExplorer
525.DownloadFileFromWeb(strURL, savetoPath) - udf using api
526.<table>
527.<th>
528.<tr>
529.<td>
530.Application Object
531.AddLinks - convert Jira into links
532.WebQuery - internet - udf - run a url and loads the output to a worksheet - recorded
533.Retrieving Data from a Webpage using Sendkeys
534.DownLoadFileFromWeb(to,from) - udf
535.GetAnchorFromCell - udf - web
536.URLEncode
537.%20
538.Parts of a URL
539.Web Editor
540.Create HTML files
541.udf - Internet - GetHTML2 - good example of using DOM
542.<col width
543.ColumnWidthToPixels - internet code
544.<style>
545.Set IE = New InternetExplorer
546.ftp
547.GetHTML - code to get the source from a web page (doesn't work on pages that use ajax)
548.http, https.
549.Download Web pages

Chapter 31-Solving Problems
550.errors - If it's broken you made a mistake (attitude)
551.#REF error
552.#NAME error
553.#Value
554.#N/A
555.#DIV/0
556.######## - doesn't fit or negative date
557.Misspelling error
558.Error Handling
559.Syntax errors
560.On Error Resume next
561.byRef argument type mismatch - syntax error
562.Error(x) ' displays error message
563.Infinite loops
564.IsError( ) - vba function
565.IsNull
566.Timing of Macro statements issue
567.Screen Flashing Problem
568.This Workbook contains links to one or more external sources [update] [don't update]
569.Windows(sWBK).Activate - Error 9 subscript error when New Window used and have :1 and :2 windows
570.Unwanted Dialogs popping up
571.IsError( ) - vba function
572.Application.DisplayAlerts = False ' get rid of unneeded dialog box
573.Application.EnableEvents = True/False
574.Error handling Logic - column doesn't exist
575.col variables - stores the number of a column which is retrieved via FindDataCol in case column moves (Hardcoding)
576.Error handling Logic - column doesn't exist
577.Err.Number
578.Processing Multiple Errors
579.LogAction - udf to write 3 fields to a sheet
580.Log2File udf
581.logit2(s) ' writes data to sequential file ' udf
582.Circular Reference
583.Compatibility Check
584.Hardcode then generalize on second occurance
585.Resume Next or Label - Error Handling
586.On Error Goto ErrHandler
587.=iferror
588." - "" - using quotes in a string
589.err <> 1004 and Error <> 40040
590.Err.Description
591.Hardcoding column number problem
592.lcol = Finddatacol("column header fields",1) ' avoid hardcoding by searching for a column
593.IsEmpty( ) vba function
594.err
595.Err.Clear
596.Err.Raise
597.mixing up row and column error
598.Final Else
599.Processing Multiple Errors
600.Error 2015
601.Error 2042 -
602.Error 5
603.Err <> 0
604.Error - Type Mismatch
605.Upper/Lower Case Common Error
606.Error File in use
607.Formula Error =C3-C2 and C2 is blank (if needed)
608.Copy formula c7 - B7 and get weird values and need to do =if(c7="","",C7-B7)🔝
609.Killing Excel
610.Timing of Macro statements issue
611.Application.EnableEvents = False
612.if a * b * c * d = 0 then msgbox "unexpected" (where a is a col lookup
613.When deleting work backwards: for x = sheets.count to 1 step -1 (loop)
614.WarnDev - udf - emails msg to default email loaded from a config "main_support_email" @ "company_domain"
615.Postitive "If" test vs. complex not

Chapter 32-Software Development Techniques
616.Table Driven Software
617.table driven software - change value is a table and get a new behavior (ex. list of items to process and add a new one)
618.Refactor - coding technique
619.Refactor code - that can be Table Driven
620.Hardcode then generalize on second occurance
621.Development, QA, UAT, Production Systems
622.Small to big - coding technique
623.Install Software in VBA
624.Backwards Compatibility
625.Design Patterns - MVC
626.Black Box Concept
627.JIRA
628.Interface Concept
629.Recursion
630.Redundancy Problem
631.4 Concepts of Object Oriented Programming - Interview Question

Chapter 33-Backup/Recovery
632.goto retry_it
633.Detect if user is running old version
634.CompatiblityCheck
635.GetLatestVersion(sfilename) - get the file with the latest version
636.GetNextVersion - udf - passed file and returns the next version of the file
637.GetSignature - gets a number based on the number of formulas + number of rows * cols
638.Archive

Chapter 34-Speed up/Optimize Excel
639.Timer
640.rt = udf to track Response Time (optimize)
641.rt - udf - Response Time
642.Application.CalculateFull ' recorded
643.LogWaitTime - track time my machines is unavailable due to PPT code running
644.Application.ErrorCheckingOptions.BackgroundChecking = False ' recorded optimize
645.Application.Calculate
646.Application.Calculation = xlCalculationManual ' recorded
647.Convert formulas to values
648.Mod - if iCnt Mod 10 = 0 then
649.Optimize - getlistcount(nnnnn) in a loop with 800 items
650.Application.ScreenUpdating = True/False ' used for optimization
651.Application.Calculation = xlCalculationAutomatic ' optimization
652.application.statusbar =

Chapter 35-Reporting
653.Large Spreasheets
654.Hide columns or rows on a report
655.Move columns on a report
656.FixTop25Other - a fix routine fixes something might have a small difference between version and standard
657.Display_the_columns - takes a spreadsheet and hides columns based on a range name - udf
658.addAITs
659.FinishDEReport - udf
660.Add Columns to a report
661.Add Columns to a Report Manually Maintained
662.Hide columns or rows on a report
663.Convert2link
664.Header Row
665.GetAllSlideNames
666.Different value issue a field in one system was KNA and another was ANA which meant the same so logic needed
667.RemoveCanceled - Removes rows with a status of canceled - udf
668.DQ Report
669.FormatMultipleSheets udf

Chapter 36-Interface with PowerPoint
670.diffs - udf - compares 2 ouputs
671.PPT Object Model
672.GetActivePPT - Function to return a reference to the Active powerpoint
673.Set PPT = CreateObject("Powerpoint.Application")
674.PPT.ActivePrenstation.Slides(2).select
675.CopyChartToPPT ... udf - very important
676.deleteSlide ' ppt routine
677.Generate_deck - udf - that runs commands in spreadsheet to generate ppt slides
678.PPT.ActivePresentation.Close
679.UpdateTOC - code to update ppt toc
680.Added after time separate process to add more slides with complex rules
681.For each shp in PPT.ActivePresentation.Slides(2)
682.AddRatingColumns
683.UpdateHyperLinkTOC - PPT
684.pptshp.HasTable
685.If pptshape.name like "xxxxx"
686.PPT.ActivePresntation.Slides.count - gets the last slide
687.pptshp.Table.Cell(i, 1).Shape.TextFrame.TextRange.Text - gets the text from a pptshp cell
688.pptshp.table.Columns.Count
689.PPT.Visible = True
690.pptshp.Table.Rows.count
691.deleteSlide ' ppt routine
692.Set ppttemplate = PPT.Presentations.Open(sFile, ReadOnly = msoTrue
693.Setting a Hyperlink on a cell in a ppt table
694.PPT.Presentations.Open sFile, ReadOnly:=msoTrue
695.PPT.ActiveWindow.Selection.SlideRange.SlideNumber - get the active slides #
696.PPT.ActivePresentation.SaveAs sFile
697.Set PPApp = GetObject(, "Powerpoint.Application")
698.PPT.ActivePresentation.Slides(n) - the nth slide oblect name to use in a with stmt
699.PPT test code to update embedded spreadsheet in ppt
700.Activewindow.Caption
701.Dim PPT As Powerpoint.Application

Chapter 37-Debugging
702.Stop
703.Using stop instead of error handling
704.Call Stack
705.End
706.i = i ' for debugging allows a place to set a break point while doing nothing
707.Debug.print variable - debugging - prints value to immediate window
708.Stop: resume next: Resume - Debugging and why?

Chapter 38-Email and Outlook
709.set iMsg = CreateObject("CDO.Message")
710.CheckScheduleSendMail - udf - email
711.GetUsersEmailAddress() - udf - internet
712.FixName - takes a passed name in Last, First and changes to First Last
713.EmailMsgBox
714.SaveAllAsPDFFile - Internet - https://howto-outlook.com/howto/saveaspdf.htm - Robert Sparnaaij
715.ColumnWidthToPixels - internet code (Data accuracy report)
716.SendChecklist_email() - udf - sends a formatted email as a checklist to proper person to dbl check report
717.MailReport
718.CreateHTMLTableForEmail (html, css,) - coverts spreadsheet visible data to HTML format
719.sendmail_cdo
720.sendmail_cdo udf
721.Attach a file to an email
722.GetUsersEmail
723.Selection.Characters.Text = "Add TOC" ' after selecting a button, you can change the text

Chapter 39-Testing 123
724.test_routine - code that tests other code
725.VerifyValue - udf - db - runs query based on Coper, field (ce,pe), date, returns value)
726.override date

Chapter 40-Pivot Tables
727.ActiveSheet.PivotTables("pt1").PivotFields("Acct_nbr").Autosort xldescending, sort ' recorded
728.ActiveSheet.PivotTables("PivotTable3").ChangePivotCache ... ' recorded
729.ActiveSheet.PivotTables("PivotTable3").PivotFields("Region").ClearAllFields 'recorded
730.ActiveSheet.PivotTables("PivotTable3").PivotFields("Region").CurrentPage = sValue
731.Hide PivotTable items
732.PivotFields("field_name").Subtotals = Array(False, False, ...)
733.ActiveSheet.PivotTables("pt1").PivotFields("coper_id").PivotFilters.Add Type:=xlTopCount, DataFiled:=... ' recorded
734.ActiveSheet.PivotTables("pt1").ColumnGrand = True ' recorded
735.PivotFields("field_name").Orientation = xlHidden
736.PivotFields("field_name").Orientation = xlRowField
737.ActiveSheet.PivotTables("PivotTable3").PivotCache.Refresh ' recorded
738.Activesheet.PivotTables("PivotTable11").PivotFields("CtryOfDom").PivotItems ' recorded
739.PivotFields("field_name").Position = 6

Chapter 41-VLookup
740.vlookup to external file - '[file name.xlsm]sheetname'!$C:$F
741.VLookup as part of a formula with """ multiple quotes issue
742.VLookup with RC[-44] from recorded code
743.=Ifna(vlookup(...
744.=ifna (xl func)
745.ActiveWorkbook.RefreshAll
746.Application.Evaluate("=vlookup(""" & ..... & """,'" & from ....

Chapter 42-Future Chapters
747.ThisWorkbook
748.Thisworkbook.path
749.Abstraction - Chess means what? or any term table, chair

Chapter 43-Input
750.Ask user via DispYN - (ex. run full version or "quick" one)
751.Application.Left
752.Application.WindowState = xlMaximized - recorded
753.Drop-down list in a Cell - Data Validation
754.inputbox

Chapter 44-Process - Run/Do Something
755.Click a button
756.Assign a value to a cell - Range("xxx") = "a value"
757.Application.Run - can be used to run a passed function on parameters - code in pptools - Callback_testing
758.Selection.OnAction = "TOC1.AddTocSheet" ' Select the shape first via ActiveSheet.Shapes.Range(Array("Button 1")).Select
759.A01 Dim WshShell As Object
760.ShellAndWait
761.Initiating Macros
762.Click an item in the Quick Access Toolbar
763.Run('c:\filename.xlsm'!Button2_click")

Chapter 45-Output
764.Msgbox - message box
765.Application.width
766.Appplication.Top
767.Application.Caption
768.Applicaton.WindowState = xlMaxmized ' recorded
769.Application.WindowState = xlNormal - recorded
770.Popup - udf (maybe put in batch section)
771.Popup - ui - udf - Display a msgbox that disappears
772.Click an Item on the Ribbon
773.RGB(x,y,z) - vba color func where x, y , z are # from 1 - 255
774.Color Dialog
775.Application.Height

Chapter 46-Subroutines and Functions
776.Sub - End Sub
777.Run a Macro with Parameters
778.functions vs. Sub
779.ByRef
780.ByVal
781.IsMissing(var)
782.subroutine parameters
783.Optional p2 ' declare a parameter as optional
784.exit sub ' used to prematurely exit a subroutine
785.Function
786.:= parameter
787.Calling a udf

Chapter 47-Charts
788.ActiveSheet.ChartObjects(sFromAddr).Activate
789.Highlight_PrevCurDiffs - udf
790.GetRegionalTopNames 6 parameters - udf - get a chart of top n based on CE or PE
791.Selection.Left or Top, Height, width, name after chartobject is activated
792.Returning a value(s) from a sub
793.Activesheet.ChartObjects(sToAddr).Delete
794.AdjustLabelPosition - udf - charts
795.True vs. False

Chapter 48-VBA Making Decisions with If and Conditionals
796.if then else end if
797.if - elseif - else - end if - and the final else
798.Option Compare Text
799.Or, And condition
800.Select Case
801.iif(num_rows = 20, 1, 0) - immediate if
802.> - greater than
803.Conditional - Or vs. And vs. Not , precedence, ( ) and nested
804.Conditional operators
805.Not
806.Applciatoin.UserName
807.if not x then

Chapter 49-Analyze Data
808.Monthly Processes (MoM files)
809.CheckListForMOM - Automates a checklist that person used to verify data
810.Nested If stmnt

Chapter 50-Range Names
811.Named Range
812.Range("range_name")
813.Activesheet.Names(sName).Delete ' deletes a named range
814.DeleteExternalNames - deletes named ranges starting with External_ ' recorded
815.Range("A1").Listnames ' puts named ranges in A1
816.ActiveWorkbook.Names("dataset").RefersToR1C1 = "=cpt_input_data!R1C1:R40C13"
817.fr = Range("first_row").Row

Chapter 51-Connecting to External Programs
818.Reference to Windows Script Host Object Model
819.Reference to Microsoft Forms 2.0 Object Library
820.As Word.Application
821.As Word.Document
822.Reference to Microsoft Data Objects 2.8 Library
823.Using vbe > tools > References
824.set wrdApp = CreateObject("Word.Application")
825.Microsoft Word (version) Object Library - Reference used
826.wrdApp,Quit
827.Tools > Reference
828.Set x = CreateObject("MSXML2.XMLHTTP")
829.Sendkeys "^A",True
830.as Outlook.Application
831.Reference Active DS Type Library
832.References - MSXML2.XLMHTTP60

Chapter 52-Documentation and Code Readability
833.Define Acronyms you use in comments
834.if .Cells(i,j) ' referencing the with - end with
835.commenting code
836.Excel Comments
837.Change Log

Chapter 53-Moving Around
838.ThisWorkbook.Activate
839.Goto Dialog - Ctrl+G
840.ActiveWindow.Activate

Chapter 54-Code that Edits Your Code
841.DeleteCodeModules -
842.DeleteServerSideCodeModules - udf report engine vbe
843.GetMacroCode

Chapter 55-Security
844.Hash - MD5 and SHA1
845.FileToMD5Hex - internet - security
846.FileToSHA1Hex - internet - security
847.LenB() - vba function
848.GetFileBytes - internet
849.stringtobytearray - internet
850.Password protecting your Macros
851.Obfuscate your code
852.CheckIfLocked - internet - code to check if the desktop is locked

Chapter 56-Dos commands
853.Dos - CD and cd ..

Chapter 57-Excel Options
854.R1C1 option

Chapter 58-Random
855.Get a Random number between 1 and a Million

Chapter 59-Math
856.Binary Numbers
857.Round - function
858.Positive (+) and Negative (-) Numbers
859./ - division
860.Int()
861.Abs(x) ' math absolute value
862.integers 1000 vs. 1000.0
863.Exponential Format
864.i = i + 1 ' increment a counter
865.Hexadecimal Numbers
866.Precedence

Chapter 60-External Applications
867.ComputerName - internet - Gets users computer name using ActiveDS.WinNTystemInfo
868.Install Software in VBA

Chapter 61-Sample UDFs
869.CountIfString(sCol,sValue) - counts the # of times the svalue appears in sCol

Chapter 62-Shortcuts
870.AR - sc for Activecell.row
871.Right1 - udf - move activecell 1 to the right
872.[=1+2] - runs an xl formula in vba
873.sCol = cl((c))
874.Ctrl+Shift+G - Google a Cell
875.Ctrl+Shift+Y - Yellow Highlight a Row
876.Ctrl+Shift+U/D- Move Cell Up or Down
877.Ctrl+Shift+R - Random Select
878.Ctrl+Shift+T - Tweet a cell
879.GotoXYZ - Shortcut key will go to the xyz system and substitute the #
880.Down1 - sub to move activecell down 1 row sc
881.GotoSheet - udf - for shortcut creation
882.Touch Typing
883.Width - End With
884.AHK to increase productivity (separate book)
885.AutoHotKeys
886.Pacing - Productivity Issue
887.cl - udf - converts a # to the AA format

Chapter 63-Wrapper Functions
888.AppLen - udf -wrapper - handles null value
889.Application.OnKey
890.AC - udf sc - Activecell
891.ShowSheet - udf - wraps the code to prevent errors
892.End_it - wrapper - call instead of End to trap where the end was called from and do something if End ocurs

Chapter 64-Sorting your Data
893.ActiveWorkbook.worksheets("sfile1").sort.sortfields.Add Key:=Range("N2"), SortOn:=xlSortOnValues, order:=xlAscending, DataOption=xlSortTextAsNumbers

Chapter 65-Forms
894.center in excel - application.width / 2
895.frm...show
896.frmLogger.show 0
897.Windows Controls - Combobox

Chapter 66-Shapes
898.Z-order
899.ActiveSheet.Buttons.Add(top,left,width,height).select 'not sure of the params
900.Selection Pane
901.Activesheet.Shapes.Range(Array("Button 1")).Select

Chapter 67-Bulletproof Your Spreadsheet
902.Protect/Unprotect a sheet
903.ActiveSheet.Unprotect
904.Protecting a Sheet

Chapter 68-Adjusting Data
905.Open two workbooks and apply adjustments from one workbook to the other
906.Data Adjustment Process at Monthend
907.Adjustment Logic

Chapter 69-Other Tools
908.Bloomberg
909.SharePoint
910.Hadoop
911.MicroStrategy
912.Tableau

Chapter 70-Formulas
913.=IfERROR(VLOOKUP(INDIRECT(ADDRESS(ROW(),VLOOKUP($BW2,'Field To Use'!$H:$O,6,0))),'Rating Lookup'!$A:$B,2,0),0)
914.Activecell.formulaR1C1 = "=If(RC[-32]=0,0,RC[-10]/RC[-32]
915.Debugging formula issues
916.Formula error =A1-B1/2
917.Evaluate formula tool

Chapter 71-Productivity
918.Pacing Tool to increase productivity

Chapter 72-Fill
919.Selection.Autofill destination:=Range("H2:I" & r)
920.Fill Down

Chapter 73-Appendix
921.Excel Special Characters
922.Range(...).value

Chapter 74-Other forms of VBA (vb, vb.net, vbscript,ASP)
923.ASP
924.VBScript

Chapter 75-Versioning
925.GettheVersion - opens workbook and finds the version and date by searching the sheet
926.Detect if user is running old version
927.LatestVersion - udf

Chapter 76-Areas
928.Selection.CurrentRegion.Select

Chapter 77-AI - Artificial Intelligence
929.AI BlackJack

Chapter 78-Useful Skills

Chapter 79-External Data Sources
930.Verify all data you get which helps when the format changes and it will new, changed, deleted
931.CSV file
932.After opening an external spreadsheet verify that it's okay - coding

Chapter 80-Logging
933.LogAction - udf to write 3 fields to a sheet

Chapter 81-Config/Settings/...
934.Get ini file - gsINIFile = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4) & ".ini"
935.Range("Settings!datasource_type") = "SEC"
936.Config

Chapter 82-Modules
937.SpreadSheetRoutines.bas
938.Import module file and there is a duplicate routine (I named the routine with a suffix "_dbs" for the module
939.copy modules in and finding all the syntax error

Chapter 83-Creating Games with Excel
940.Game - Board Game
941.AI - Checkers
942.Game - Card Game
943.Game - Concentration - Memory game
944.Game - Create a game

Chapter 84-Printing
945.PDFPrint
946.FormatFromTemplate - udf Report Engine
947.Self Learning
948.SetAutoFitMergedCell udf Report Engine
949.NLP - BS2-1 (desk)

    Table of Contents | Send us your feedback | © 2022 All Rights Reserved | Edit