Solved

Passing a optional argument

Posted on 2007-11-30
3
148 Views
Last Modified: 2013-12-26
Hi experts
I have 5 mshflexgrids on a form 3 are contained in pictureboxs I am trying adjust the grids widths, based on the column widths and am trying to also set the picture widths as optional argument. The code below works fine if i pass the picture argument, but fails if with don't with a "Object variable not set" error message. How can i correct this?

Sub AdjustGridWidth(grd As MSHFlexGrid, Optional pic As PictureBox)
    Dim i As Integer
    Dim iWidth As Integer
   
 With grd
    For i = 1 To .Cols - 1
    iWidth = iWidth + .ColWidth(i) + 13
    .Width = iWidth
   Next i
 End With
   
  If IsMissing(pic) Then
    Exit Sub
   End If
   
    With pic
    pic.Width = iWidth
    End With
 
   
    End Sub
0
Comment
Question by:isnoend2001
3 Comments
 
LVL 92

Accepted Solution

by:
Patrick Matthews earned 125 total points
ID: 20384022
Replace:

  If IsMissing(pic) Then
    Exit Sub
   End If

with:

  If pic Is Nothing Then
    Exit Sub
   End If

IsMissing only works whne the argument is defined as Variant.
0
 
LVL 38

Assisted Solution

by:PaulHews
PaulHews earned 125 total points
ID: 20384068
Try this instead.  IsMissing only works with variants.  (See the help.)
Sub AdjustGridWidth(grd As MSHFlexGrid, Optional pic As PictureBox = Nothing)
    Dim i As Integer
    Dim iWidth As Integer
    
    With grd
        For i = 1 To .Cols - 1
            iWidth = iWidth + .ColWidth(i) + 13
            .Width = iWidth
        Next i
    End With
    
    If Not pic Is Nothing Then
        With pic
            pic.Width = iWidth
        End With
    End If
End Sub

Open in new window

0
 

Author Closing Comment

by:isnoend2001
ID: 31411983
Thanks both work perfect
0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Displaying an arrayList in a listView using the default adapter is rarely the best solution. To get full control of your display data, and to be able to refresh it after editing, requires the use of a custom adapter.
This article will inform Clients about common and important expectations from the freelancers (Experts) who are looking at your Gig.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

805 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question