Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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.

 

 

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