Question posted 2011 · +8 upvotes
What is the difference between trim and trim$ in vba? Accidentally today when I used left and trim functions in vba, The compiler said cant find project or library
When I googled it ,On one of the forum I found the user using like these
vba.trim("string")
He answered to prefix with vba for the functions. and surprisingly it worked on my pc too.But I found these functions
trim and trim$
left and left$
leftb and leftb$
I was wondering what is trim and trim$. I wanted to find the difference So I started to google it but the results are for trim ignoring the $ alphabet.
I’m just curious to know about it.I was suspecting that trim is vba function and trim$ is excel sheet function. But we have Application.worksheetfunction to use excel functions right?Could anyone differentiate trim and trim$.
Accepted answer +16 upvotes
While Issun has answered your question as asked I had enough detail that I wanted to post to provide a further answer as opposed to comment.
The string versions are significantly faster ~ approx 10-30% depending on the data type from my testing over the years. While this is not normally noticeable, it is a performance difference when running on large datasets. So for me it’s a no-brainer to use the string rather than variant version.
The sample below works on strings so it shows a speed advantage at the higher end of this range
I have used these functions in combination with variant arrays in both of my public addins as these programs are typically used on entire worksheets even entire workbooks
This link is an excellent reference, for your question, and well beyond
- Comparing in
vbBinaryComparerather thanvbTextCompare - Optimising empty strings
- Testing before replacing
- Using built in constants,
VbNullStringis faster than"", although both will miss a cell that contains'whereasIsEmptypicks this up - Optimising Loops (break
ANDinto two separateIFs to give an early escape) - Optimising If tests to return the most common Boolean result first rather than run through the
Elsepath (ie aFalsetest may be more appropriate thanTrue) Using
Mid$on the left hand side of an assignment. From hidden features of VBASub QuickTimer1() Dim lngRow As Long Dim dbTime As Double Dim strSample As String Dim strShort As String strSample = "random string" dbTime = Timer() For lngRow = 1 To 50000000 strShort = Left$(strSample, 6) Next lngRow MsgBox Timer() - dbTime End Sub Sub QuickTimer2() Dim lngRow As Long Dim dbTime As Double Dim strSample As String Dim strShort As String strSample = "random string" dbTime = Timer() For lngRow = 1 To 50000000 strShort = Left(strSample, 6) Next lngRow MsgBox Timer() - dbTime End Sub
External references cited (3)
- experts-exchange.com — public addins
- aivosto.com — This link
- stackoverflow.com — hidden features of VBA
Top excel-vba Q&A (6)
- How to clear the entire array? +58 (2010)
- How to change Format of a Cell to Text using VBA +55 (2011)
- Download attachment from Outlook and Open in Excel +43 (2012)
- Can a VBA function in Excel return a range? +36 (2009)
- 2 Dimensional array from range +34 (2013)
- Hiding an Excel worksheet with VBA +33 (2009)
excel-vba solutions on this site
— top 20%.