Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Programming / August 2007

Tip: Looking for answers? Try searching our database.

UserForm and macro woes

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Robert_L_Ross - 31 Jul 2007 23:58 GMT
Ok, here's where I'm at.

I have a document template with a userform with three check boxes and a drop
down.  When the form loads, the code has it go to a spreadsheet and return
all schools from column 1 ('schools') of a 4 column table.

I want the users to be able to 'filter' the list returned by clicking one or
more of the checkboxes.  When the user clicks checkbox1 (STAFFcheckbox) to
True, I want the list to 'filter' to only those schools.

I have the code working, and I've set it up so that it checks the status of
all three check boxes (so I can use one code when any one of the three
buttons are changed).

Problem is, I should have this code in a module and not tied to each of the
three buttons (making three copies of the code).  I can't seem to get the
buttonclick action to run the macro.

Here's my code on the userform:
Sub autonew()

   Load UserForm1
   
   Dim db As DAO.Database
   Dim rs As DAO.Recordset
   Dim NoOfRecords As Long

   ' Open the database
   Set db =
opendatabase("G:\GS-220\SLATE\CORRECTION_SHEETS\SCHOOL_LIST.xls", False,
False, "Excel 8.0")

   ' Retrieve the recordset
   'Set rs = db.OpenRecordset("SELECT * FROM `schools` WHERE SCHOOLS <> ''")
   Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> ''")

   ' Determine the number of retrieved records
   With rs
        .MoveLast
        NoOfRecords = .RecordCount
        .MoveFirst
   End With

   ' Set the number of Columns = number of Fields in recordset
   UserForm1.ComboBox1.ColumnCount = rs.Fields.Count
   
   ' Load the ListBox with the retrieved records
   UserForm1.ComboBox1.Column = rs.GetRows(NoOfRecords)
   
   'Me.Repaint
   
   ' Cleanup
   rs.Close
   db.Close
   Set rs = Nothing
   Set db = Nothing

   UserForm1.Show

End Sub

So when the form is new, I get my userform just fine.
Now, let's set a checkbox:
Sub UPDATELIST()

   Dim db As DAO.Database
   Dim rs As DAO.Recordset
   Dim NoOfRecords As Long
   Dim CONDITION As Integer

   ' Open the database
   Set db =
opendatabase("G:\GS-220\SLATE\CORRECTION_SHEETS\SCHOOL_LIST_NEW.xls", False,
False, "Excel 8.0")

   ' Retrieve the recordset
   Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> ''")
   
   'Stafford Only
   If STAFFCheckBox = True And PLUSCheckBox = False And GRADCheckBox =
False Then
       Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> '' AND STAFF = 'X'")
   End If
   
   'PLUS Only
   If STAFFCheckBox = False And PLUSCheckBox = True And GRADCheckBox =
False Then
       Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> '' AND PLUS = 'X'")
   End If
   
   'GRAD PLUS Only
   If STAFFCheckBox = False And PLUSCheckBox = False And GRADCheckBox =
True Then
       Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> '' AND GPLUS = 'X'")
   End If
   
   'Stafford/PLUS
   If STAFFCheckBox = True And PLUSCheckBox = True And GRADCheckBox = False
Then
       Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> '' AND STAFFORD = 'X' and PLUS = 'X'")
   End If
   
   'PLUS/GRAD PLUS
   If STAFFCheckBox = False And PLUSCheckBox = True And GRADCheckBox = True
Then
       Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> '' AND PLUS = 'X' and GPLUS = 'X'")
   End If
   
   'Stafford/GRAD PLUS
   If STAFFCheckBox = True And PLUSCheckBox = False And GRADCheckBox = True
Then
       Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> '' AND STAFFORD = 'X' and GPLUS = 'X'")
   End If
   
   'Stafford/Plus/GRAD PLUS
   If STAFFCheckBox = True And PLUSCheckBox = True And GRADCheckBox = True
Then
       Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> ''")
   End If
   
   'NONE
   If STAFFCheckBox = False And PLUSCheckBox = False And GRADCheckBox =
False Then
       Set rs = db.OpenRecordset("SELECT Schools FROM `NEWSCHOOLLIST` WHERE
Schools <> ''")
   End If
   
   ' Determine the number of retrieved records
   With rs
        .MoveLast
        NoOfRecords = .RecordCount
        .MoveFirst
   End With

   ' Set the number of Columns = number of Fields in recordset
   UserForm1.ComboBox1.ColumnCount = rs.Fields.Count
   
   ' Load the ListBox with the retrieved records
   UserForm1.ComboBox1.Column = rs.GetRows(NoOfRecords)
   
   'Me.Repaint
   
   ' Cleanup
   rs.Close
   db.Close
   Set rs = Nothing
   Set db = Nothing
   
End Sub

Now, I can put that code in each button click, but that would be 3 areas I'd
have to update if our source list changes (adds columns, etc.).

I want have the userform's checkboxclick action run this code:
Private Sub GRADCheckBox_Click()
   Application.Run (UPDATELIST)
End Sub

Private Sub PLUSCheckBox_Click()
   Application.Run (UPDATELIST)
End Sub

Private Sub STAFFCheckBox_Click()
   Application.Run (UPDATELIST)
End Sub

When I put the code in this way, nothing happens when I click a check box,
but the code runs when it's in each checkbox click action.

What am I doing wrong?

Thanks!
Russ - 01 Aug 2007 09:38 GMT
See Word VBA Help for: call

> Ok, here's where I'm at.
>
[quoted text clipped - 177 lines]
>
> Thanks!

Signature

Russ

drsmN0SPAMikleAThotmailD0Tcom.INVALID


Rate this thread:






 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.