VBA Best Practice There is a lot of information floating around about how to get various things done in VBA, how to make the best use, or sometimes just the most use of VBA and Excel. This section aims to add an element of Quality and Best Practices. These are just general guidelines, a professional developer will always assess the options and make the appropriate choice in their specific situation. These suggestions are specific to Excel VBA in commercial settings, many will not translate to other technologies or other settings. VBA Best Practice Series High Quality Code - Excel 1
- It is usually dangerous to hardcode a range reference in VBA.
- Use range names to connect code to worksheet ranges
- Choose a single cell range name as a start point
- Choose a multi-cell range to allow the user to insert/delete rows/columns
- Use in cell text where possible, closely ties the mechanics to what the user uses.
- Always check cell text thoroughly before depending on it
- Note data validation is easily bypassed
- Give sheets meaningful code names and use them
- Take the first few rows and columns for system use, hide them if necessary
- Check the selection type with typeOf if you are going to use it.
- Generally avoid selecting and copying - set values instead where possible.
- Be clear and explicit which workbook and worksheet code should operate on, especially ThisWorkbook v ActiveWorkbook for add-ins.
|
|
Upcoming Events:
25 January 2012 - UK Excel Developer Conference - London
Products for sale:
AltFileSearch

New information about the missing FileSearch feature in Office 2007 and details of our pragmatic solution (Current price GBP 30.00)
wsUnprotector
Instant Excel worksheet protection remover and password recovery (Current price GBP 15.00)
Classic Ribbon Tab
Add Excel 97/2000/2002/2003 compatible menu structure to Excel 2007
(Current Price GBP 10.00)
Products coming soon:
Link Manager
(Find and control external links in Excel Workbooks)
Due by Q1 2111.
XLAnalyst Pro
(Excel VBA based spreadsheet auditing tool)
Due before the end of 2111. |