Platform SDK: CDO 1.2.1 |
The Count property returns the number of AppointmentItem, MeetingItem, or GroupHeader and Message objects in the collection, or a very large number if the exact count is not available. Read-only.
objMsgColl.Count
Long
A large collection cannot always maintain an accurate count of its members, and the Count property cannot be used as the collection’s size when it has the value &H7FFFFFFF. Programmers needing to access individual objects in a large collection are strongly advised to use the Microsoft® Visual Basic® For Each statement or the Get methods.
The recommended procedures for traversing a large collection are, in decreasing order of preference:
If the message store provider cannot supply the precise number of objects, CDO returns &H7FFFFFFF ( = 2^31 – 1 = 2,147,483,647) for the Count property. This is the largest positive value for a long integer and is intended to prevent an approximate count from prematurely terminating an indexed loop. On 32-bit platforms, this value is defined in the type library as CdoMaxCount. On other platforms, CdoMaxCount is not defined, and a program on such a platform must compare the Count property against &H7FFFFFFF to see if it is reliable.
If the Count property is not reliable, that is, if it is &H7FFFFFFF, a program using it to terminate an indexed loop must also check each returned object for a value of Nothing to avoid going past the end of the collection.
The use of the Item property in conjunction with the Count property in a large collection can be seen in the following example.
This code fragment searches for a Message object with subject “Bonus”. Note that the variable is declared as Object instead of Message, and that the Class property is tested to verify that the object returned in the Item property is not an AppointmentItem, GroupHeader, or MeetingItem object.
Dim i As Integer ' loop index / object counter Dim collMessages As Messages ' assume collection already provided Dim objMsg As Object ' could get either group header or message If collMessages Is Nothing Then MsgBox "Messages collection object is invalid" ' Exit ElseIf 0 = collMessages.Count Then ' collection is empty MsgBox "No messages in collection" ' Exit End If ' look for message about "Bonus" in collection For i = 1 To collMessages.Count Step 1 Set objMsg = collMessages.Item(i) ' or collMessages(i) since Item is default property If objMsg Is Nothing Then ' end of collection MsgBox "No such message found in collection" Exit For ElseIf objMsg.Class = CdoMsg Then ' exclude other object classes If 0 = StrComp(objMsg.Subject, "Bonus") Then ' or objMsg since Subject is default property MsgBox "Desired message is at index " & i Exit For End If End If Next i