VBA Tip: Using the With Statement

The With statement allows for specifying members of an object or user-defined type in a more efficient and easier to read format. Each With statement requires an End With statement to close the block. An example of the with statement is shown below.

Dim myCollection As Collection
Set my Collection = New Collection
' Standard assignment
myCollection.Add = 5
myCollection.Add = 10
myCollection.Add = 15
'Assignment using With statement
With myCollection
    .Add = 5
    .Add = 10
    .Add = 15
End With
With CadInputQueue
    .SendKeyin "lv=default"
    .SendKeyin "co="
    .SendKeyin "wt=1"
    .SendCommand "place smartline"
End With

With statements can also be nested for even greater efficiency

' MicroStation text element example
With myText
    .Text = "This is a test"
    ' The TextStyle object is a member of the
    ' text element object
    With .TextStyle
        .Height = 3
        .Width = 3
    End With
End With
Rod Wing

Rod Wing

Rod joined EnvisionCAD in March 2007 and has nearly three decades of experience working in the CADD industry. He led the IT evaluations of Bentley InRoads and AutoDesk Civil 3D at Wisconsin DOT in their overall CAiCE replacement evaluation. He also led the MicroStation V7 to V8 upgrade effort at Wisconsin DOT which included updating not only the CADD standards to accommodate the changes in the file format but also updating legacy MDL and macros to work in the new environment. Rod received a Bachelor of Science degree from the University of Wisconsin in Cartography and a Master of Science in Geographic and Cartographic Sciences from George Mason University. Rod has extensive experience in CADD as well as the areas of GIS, cartography, plotting, scanning, raster editing/manipulation, publishing, and file/data translations. In all of these areas, he has produced custom tools and developed workflows to enhance productivity between diverse sets of applications. He instructs MicroStation classes ranging from fundamentals to advanced applications.


Leave a Reply

Your email address will not be published. Required fields are marked *