Strings module
The Strings module groups together the runtime’s text-processing primitives — measuring strings, looking inside them, building new ones from old ones, splitting and joining arrays of them, and formatting non-string values as text. Most members come in two callable forms: a $-suffixed form (e.g. Left$) that returns a String, and an unsuffixed form (e.g. Left) that returns a Variant (String) and propagates Null through the call. Several also have a B variant — AscB, ChrB, InStrB, LeftB, LenB, MidB, RightB — that operates on byte positions rather than character positions, for use with byte-buffer data held in a String.
Length and character codes
Len returns the number of characters in a string, or — when given a non-string variable — the number of bytes the variable occupies. Asc returns the character code of a string’s first character; Chr is its inverse, building a single-character string from a code point. The W variants (AscW, ChrW) work in Unicode regardless of the system code page.
Debug.Print Len("Hello") ' 5
Debug.Print Asc("A") ' 65
Debug.Print Chr(65) ' "A"
Searching and comparing
StrComp compares two strings and returns -1, 0, or 1 to report which is greater (or equal). InStr and InStrRev return the position of one string inside another, scanning forward from a chosen start position or backward from one. All three accept an optional compare argument controlling whether the comparison is case-sensitive (vbBinaryCompare), case-insensitive (vbTextCompare), or governed by the surrounding Option Compare setting (vbUseCompareOption). Note that InStrRev swaps the order of the haystack and needle arguments relative to InStr.
Debug.Print InStr("Hello, world", "o") ' 5 (first match, forward)
Debug.Print InStrRev("Hello, world", "o") ' 9 (first match, reverse)
Debug.Print StrComp("ABC", "abc", vbTextCompare) ' 0 (equal under text compare)
Substrings, padding, and trimming
Left, Mid, and Right extract a substring from the start, middle, or end of a string. Mid doubles as an l-value via the Mid = statement, which writes characters back into a string in place. Space returns a run of spaces and String returns a run of any chosen character — both useful for padding fixed-width output. LTrim, RTrim, and Trim strip leading, trailing, or both kinds of whitespace from a string.
Dim S As String
S = " Hello, world "
Debug.Print "[" & Trim(S) & "]" ' "[Hello, world]"
Debug.Print Left(Trim(S), 5) ' "Hello"
Debug.Print String(3, "*") & " " & Space(2) & "!" ' "*** !"
Case folding and other transformations
LCase and UCase fold a string to lowercase or uppercase. StrReverse reverses the character order. StrConv bundles a wider set of conversions — case folding, proper-casing, narrow/wide and Hiragana/Katakana mapping for DBCS locales, and Unicode-to-ANSI byte-array round-tripping — selected by an additive flag argument.
Debug.Print UCase("Hello") ' "HELLO"
Debug.Print StrReverse("Hello") ' "olleH"
Debug.Print StrConv("hello world", vbProperCase) ' "Hello World"
Splitting, joining, replacing, filtering
Split breaks a string apart at a delimiter into a zero-based array of substrings; Join reverses the operation, gluing an array back together with a chosen separator between elements. Replace substitutes one substring for another across a string, optionally limited to a fixed number of replacements or starting from a given offset. Filter reduces a string array to only those elements that contain — or, with include set to False, do not contain — a chosen substring.
Dim Parts() As String
Parts = Split("red,green,blue", ",")
Debug.Print Join(Parts, " / ") ' "red / green / blue"
Debug.Print Replace("red,green,blue", ",", "; ") ' "red; green; blue"
Formatting values as text
Format is the general-purpose formatter: it takes any expression — number, date, or string — together with a named or user-defined format string, and returns the rendered text. The four named-formatter functions FormatCurrency, FormatNumber, FormatPercent, and FormatDateTime wrap the most common cases with explicit parameters in place of a format string, so the call site reads as the intent rather than as a recipe. MonthName and WeekdayName return the localised name (or abbreviation) of a month or day of the week, given its numeric index.
Debug.Print Format(1234.5, "#,##0.00") ' "1,234.50"
Debug.Print FormatCurrency(1234.5) ' "$1,234.50" (US locale)
Debug.Print FormatDateTime(Now, vbLongDate) ' "Saturday, May 9, 2026"
Debug.Print MonthName(1) ' "January"
Members
- Asc – returns the character code of the first character in a string
- Chr – returns the character associated with a character code
- Filter – returns a subset of a string array matching (or not matching) a substring
- Format – formats an expression according to a format expression
- FormatCurrency – formats an expression as a currency string
- FormatDateTime – formats an expression as a date/time string
- FormatNumber – formats an expression as a numeric string
- FormatPercent – formats an expression as a percent string
- InStr – returns the position of one string within another
- InStrRev – returns the position of one string within another, searching from the end
- Join – concatenates a string array using a given delimiter
- LCase – returns a string converted to lowercase
- Left – returns a leftmost substring of a string
- Len – returns the length of a string, or the storage size of a variable
- LTrim – removes leading spaces from a string
- Mid – returns a substring of a string
- MonthName – returns the name of the specified month
- Replace – replaces substrings within a string
- Right – returns a rightmost substring of a string
- RTrim – removes trailing spaces from a string
- Space – returns a string of spaces
- Split – splits a string into a string array on a delimiter
- StrComp – compares two strings
- StrConv – converts a string to a specified format
- String – returns a string of repeating characters
- StrReverse – reverses the order of characters of a string
- Trim – removes leading and trailing spaces from a string
- UCase – returns a string converted to uppercase
- WeekdayName – returns the name of the specified day of the week