Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB4,VB5,VB6
Expertise: Advanced
Jun 5, 1999



Full Text Search: The Key to Better Natural Language Queries for NoSQL in Node.js

Manufacture a Missing value

Visual Basic doesn't provide you with a means for creating a Missing value, a feature that in some cases would prove useful in order to simplify the syntax of calls to procedures that expects a variable number of arguments. It isn't difficult, however, to create such a value programmatically, as follows:

' never pass an argument to this function

Function MissingValue(Optional DontPassMe As Variant) As Variant
    ' If an argument is passed, raise the "Invalid Procedure Call" error
    If Not IsMissing(DontPassMe) Then Err.Raise 5       
    MissingValue = DontPassMe
End Function
There is an alternative way, however, that doesn't require that you intentially avoid to pass an Optional argument to a procedure. This latter method actually manufactures the internal representation of a Variant:

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
    Any, source As Any, ByVal bytes As Long)

Function MissingValue() As Variant
    ' A "missing" value is actually an error code equal to hex 80020004
    ' so here we store the integer part of this value
    MissingValue = &H80020004
    ' and then we modify the VarType to vbError (= 10)
    CopyMemory MissingValue, 10, 2
End Function
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date