VB6Parse / Library / String / right_dollar

VB6 Library Reference

Right$ Function

The Right$ function in Visual Basic 6 returns a string containing a specified number of characters from the right side (end) of a string. The dollar sign ($) suffix indicates that this function always returns a String type, never a Variant.

Syntax

Right$(string, length)

Parameters

Return Value

Returns a String containing the rightmost length characters of string.

Behavior and Characteristics

Length Handling

Null Handling

Type Differences: Right$ vs Right

Common Usage Patterns

1. Extract File Extension

Function GetExtension(fileName As String) As String
Dim dotPos As Integer
dotPos = InStrRev(fileName, ".")
If dotPos > 0 Then
GetExtension = Right$(fileName, Len(fileName) - dotPos)
Else
GetExtension = ""
End If
End Function

Dim ext As String
ext = GetExtension("document.txt")  ' Returns "txt"

2. Get Last N Characters

Dim text As String
Dim suffix As String
text = "Hello World"
suffix = Right$(text, 5)  ' Returns "World"

3. Extract Account Number Suffix

Function GetAccountSuffix(accountNum As String) As String
' Get last 4 digits of account number
GetAccountSuffix = Right$(accountNum, 4)
End Function

Dim lastFour As String
lastFour = GetAccountSuffix("1234567890")  ' Returns "7890"

4. Pad String to Fixed Width

Function PadLeft(text As String, width As Integer) As String
Dim padded As String
padded = Space(width) & text
PadLeft = Right$(padded, width)
End Function

Dim result As String
result = PadLeft("42", 5)  ' Returns "   42"

5. Extract Trailing Digits

Function GetTrailingNumber(text As String) As String
Dim i As Integer
Dim numChars As Integer
For i = Len(text) To 1 Step -1
If Not IsNumeric(Mid$(text, i, 1)) Then Exit For
numChars = numChars + 1
Next i
If numChars > 0 Then
GetTrailingNumber = Right$(text, numChars)
Else
GetTrailingNumber = ""
End If
End Function

Dim num As String
num = GetTrailingNumber("Item123")  ' Returns "123"

6. Time Component Extraction

Function GetSeconds(timeStr As String) As String
' Extract seconds from "HH:MM:SS" format
GetSeconds = Right$(timeStr, 2)
End Function

Dim secs As String
secs = GetSeconds("14:30:45")  ' Returns "45"

7. Validate String Suffix

Function HasExtension(fileName As String, ext As String) As Boolean
Dim fileExt As String
fileExt = Right$(fileName, Len(ext))
HasExtension = (UCase$(fileExt) = UCase$(ext))
End Function

If HasExtension("report.pdf", ".pdf") Then
Debug.Print "PDF file detected"
End If

8. Extract Domain from Email

Function GetEmailDomain(email As String) As String
Dim atPos As Integer
atPos = InStr(email, "@")
If atPos > 0 Then
GetEmailDomain = Right$(email, Len(email) - atPos)
Else
GetEmailDomain = ""
End If
End Function

Dim domain As String
domain = GetEmailDomain("user@example.com")  ' Returns "example.com"

9. Format Currency Display

Function FormatAmount(amount As String) As String
' Align decimal values
Dim formatted As String
formatted = Space(15) & amount
FormatAmount = Right$(formatted, 15)
End Function

10. Extract Path Component

Function GetFileName(fullPath As String) As String
Dim slashPos As Integer
slashPos = InStrRev(fullPath, "\")
If slashPos > 0 Then
GetFileName = Right$(fullPath, Len(fullPath) - slashPos)
Else
GetFileName = fullPath
End If
End Function

Dim fileName As String
fileName = GetFileName("C:\Documents\report.txt")  ' Returns "report.txt"

Best Practices

When to Use Right$ vs Right

' Use Right$ when you need a String
Dim fileName As String
fileName = Right$(fullPath, 10)  ' Type-safe, always returns String

' Use Right when working with Variants or Null values
Dim result As Variant
result = Right(variantValue, 5)  ' Can propagate Null

Validate Length Parameter

Function SafeRight(text As String, length As Integer) As String
If length < 0 Then
SafeRight = ""
ElseIf length >= Len(text) Then
SafeRight = text
Else
SafeRight = Right$(text, length)
End If
End Function

Check for Empty Strings

If Len(text) > 0 Then
suffix = Right$(text, 3)
Else
suffix = ""
End If

Use with InStrRev for Parsing

' Find last occurrence and extract everything after it
Dim pos As Integer
pos = InStrRev(fullPath, "\")
If pos > 0 Then
fileName = Right$(fullPath, Len(fullPath) - pos)
End If

Performance Considerations

' Less efficient
For i = 1 To 1000
result = Right$(largeString, Len(largeString) - 10)
Next i

' More efficient
Dim strLen As Long
strLen = Len(largeString)
For i = 1 To 1000
result = Right$(largeString, strLen - 10)
Next i

Common Pitfalls

1. Negative Length Values

' Runtime error: Invalid procedure call or argument
text = Right$("Hello", -1)  ' ERROR!

' Validate first
If length >= 0 Then
text = Right$(source, length)
End If

2. Off-by-One Errors

' Common mistake: forgetting to account for delimiter position
Dim pos As Integer
pos = InStrRev(path, "\")
' Wrong: includes the backslash
fileName = Right$(path, pos)
' Correct: excludes the backslash
fileName = Right$(path, Len(path) - pos)

3. Not Checking String Length

' Potential issue: what if text is shorter than 10 characters?
suffix = Right$(text, 10)  ' Returns entire string if text.Length < 10

' Better: check first
If Len(text) >= 10 Then
suffix = Right$(text, 10)
Else
' Handle short string case
suffix = text
End If

4. Assuming Fixed Positions

' Fragile: assumes extension is always 3 characters
ext = Right$(fileName, 3)  ' Fails for ".html", ".jpeg"

' Better: find the dot
Dim dotPos As Integer
dotPos = InStrRev(fileName, ".")
If dotPos > 0 Then
ext = Right$(fileName, Len(fileName) - dotPos)
End If

5. Null Value Handling

' Right$ with Null causes runtime error
Dim result As String
result = Right$(nullValue, 5)  ' ERROR if nullValue is Null

' Protect against Null
If Not IsNull(value) Then
result = Right$(value, 5)
Else
result = ""
End If

Limitations

← Back to String | View all functions