Set Statement
Description
Assigns an object reference to a variable or property.
Syntax
Set objectvar = {[New] objectexpression | Nothing}
The Set statement syntax has these parts:
Part | Description |
|
objectvar | Required. Name of the variable or property; follows standard variable naming conventions. |
New | Optional. New is usually used during declaration to enable implicit object creation. When New is used with Set, it creates a new instance of the class. If objectvar contained a reference to an object, that reference is released when the new one is assigned. The New keyword can't be used to create new instances of any intrinsic data type and can't be used to create dependent objects. |
(continued)
objectexpression | Required. Expression consisting of the name of an object, another declared variable of the same object type, or a function or method that returns an object of the same object type. |
Nothing | Optional. Discontinues association of objectvar with any specific object. Assigning Nothing to objectvar releases all the system and memory resources associated with the previously referenced object when no other variable refers to it. |
Remarks
To be valid, objectvar must be an object type consistent with the object being assigned to it.
The Dim, Private, Public, ReDim, and Static statements only declare a variable that refers to an object. No actual object is referred to until you use the Set statement to assign a specific object.
The following example illustrates how Dim is used to declare an array with the type Form1. No instance of Form1 actually exists. Set then assigns references to new instances of Form1 to the myChildForms variable. Such code might be used to create child forms in an MDI application.
Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1
Generally, when you use Set to assign an object reference to a variable, no copy of the object is created for that variable. Instead, a reference to the object is created. More than one object variable can refer to the same object. Because such variables are references to the object rather than copies of the object, any change in the object is reflected in all variables that refer to it. However, when you use the New keyword in the Set statement, you are actually creating an instance of the object.
See Also
Dim statement, Let statement, Private statement, Public statement, ReDim statement, Static statement.
Example
This example uses the Set statement to assign object references to variables. YourObject is assumed to be a valid object with a Text property.
Dim YourObject, MyObject, MyStr
Set MyObject = YourObject ' Assign object reference.
' MyObject and YourObject refer to the same object.
YourObject.Text = "Hello World" ' Initialize property.
MyStr = MyObject.Text ' Returns "Hello World".
' Discontinue association. MyObject no longer refers to YourObject.
Set MyObject = Nothing ' Release the object.
Example (Microsoft Excel)
This example adds a new worksheet to the active workbook and then sets the name of the worksheet.
Set newSheet = Worksheets.Add
newSheet.Name = "1995 Budget"
This example creates a new worksheet and then inserts into it a list of all the names in the active workbook, including their formulas in A1-style notation in the language of the user.
Set newSheet = ActiveWorkbook.Worksheets.Add
i = 1
For Each nm In ActiveWorkbook.Names
newSheet.Cells(i, 1).Value = nm.NameLocal
newSheet.Cells(i, 2).Value = "'" & nm.RefersToLocal
i = i + 1
Next