but let me warn you first: not every object supports "length" property. thus not filtering the selectionset may result in unexpected errors
if you want to go on selecting everything anyway, look into my code more carefully: I did not use "SelectOnScreen" method
Also look through the online AutoCAD ActiveX and VBA Reference "SelectionSet object " topic, you'll find:
Selects objects and places them into a selection set.
object.Select Mode[, Point1][, Point2][, FilterType][, FilterData]
The object this method applies to.
AcSelect enum; input-only
Variant (array of doubles); input-only; optional
The 3D WCS coordinates, or array of coordinates, specifying Point1. See the mode definitions for the proper use of Point1.
Variant (three-element array of doubles); input-only; optional
The 3D WCS coordinates specifying Point2. See the mode definitions for the proper use of Point2.
Integer; input-only; optional
A DXF group code specifying the type of filter to use.
Variant; input-only; optional
The value to filter on.
This method supports the filtering mechanism.
The following selection modes are available:
Selects all objects completely inside a rectangular area whose corners are defined by Point1 and Point2.
Selects objects within and crossing a rectangular area whose corners are defined by Point1 and Point2.
Selects the most recent selection set. This mode is ignored if you switch between paper space and model space and attempt to use the selection set.
Selects the most recently created visible objects.
Selects all objects.
For more selection mode options, see the SelectByPolygon, SelectAtPoint, and SelectOnScreen methods.
and you'll also find the following example
' This example adds members to a selection set, first by crossing and
' then by filtering for circles.
' Create the selection set
Dim ssetObj As AcadSelectionSet
Set ssetObj = ThisDrawing.SelectionSets.Add("SSET")
' Add all object to the selection set that lie within a crossing of (28,17,0) and
' (-3.3, -3.6,0)
Dim mode As Integer
Dim corner1(0 To 2) As Double
Dim corner2(0 To 2) As Double
mode = acSelectionSetCrossing
corner1(0) = 28: corner1(1) = 17: corner1(2) = 0
corner2(0) = -3.3: corner2(1) = -3.6: corner2(2) = 0
ssetObj.Select mode, corner1, corner2
' Add all the Circles to the selection set that lie within the crossing of (28,17,0) and
' (-3.3, -3.6,0) by filtering from the current drawing
Dim gpCode(0) As Integer
Dim dataValue(0) As Variant
gpCode(0) = 0
dataValue(0) = "Circle"
Dim groupCode As Variant, dataCode As Variant
groupCode = gpCode
dataCode = dataValue
ssetObj.Select mode, corner1, corner2, groupCode, dataCode