How to use LSet statement in VBA?

The LSet statement in VBA (Visual Basic for Applications) is used for two main purposes:

  • Assigning strings to fixed-length string variables: It allows you to assign a string to a fixed-length string variable. If the string is shorter than the fixed length, it’s padded with spaces. If it’s longer, it’s truncated.
  • Copying data in user-defined types: It can also be used to copy the data from one user-defined type variable to another, provided they are of the same type.

Here’s how you can use LSet in both scenarios:

Assigning Strings to Fixed-length String Variables

Dim fixedStr As String * 10  ' Declare a fixed-length string
Dim variableStr As String

variableStr = "Hello"
LSet fixedStr = variableStr  ' Assign to the fixed-length string
' fixedStr now contains "Hello     " (with padding spaces)

Copying Data in User-Defined Types

First, you need to define a user-defined type:

Type MyType
    Field1 As Integer
    Field2 As String * 5
End Type

Then, you can use LSet to copy data between variables of this type:

Dim var1 As MyType, var2 As MyType

' Initialize var1
var1.Field1 = 10
var1.Field2 = "Hi"

LSet var2 = var1  ' Copy var1 to var2
' Now var2.Field1 is 10 and var2.Field2 is "Hi   "

Important Notes:

  • The LSet statement works with fixed-length strings and user-defined types. It’s not suitable for variable-length strings or other data types.
  • For user-defined types, the types must be exactly the same. You cannot copy data between different types using LSet.
  • When copying strings, be aware of the padding/truncating behavior. This can be particularly important when dealing with data that needs precise formatting.

Always test your code thoroughly to ensure that it behaves as expected, especially when working with fixed-length strings and user-defined types.

Unlock Your Potential


Basic - Advanced


Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project

Leave a Reply

Your email address will not be published. Required fields are marked *