Is Multi click Event possible?

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I have 17 CommandButtons, "Browse..." on a form.
Each one of them is suppose to open the FileOpen Dialog at a specific folder
After selecting a file, the file is to be assign to the TextBox
corresponding to each button
A few of them open to the same folder location

My question is, is it possible to write a code that doesn't require me
writing a click event for each Browse button?
And if there is such a code I would appreciate any help to point me in the
right direction.

Thanks
 
In the userform, add this code

Option Explicit

Dim mcolEvents As Collection

Private Sub UserForm_Initialize()
Dim cBtnEvents As clsUserFormEvents
Dim ctl As msforms.Control

Set mcolEvents = New Collection

For Each ctl In Me.Controls
If TypeName(ctl) = "CommandButton" Then
Set cBtnEvents = New clsUserFormEvents
Set cBtnEvents.mButtonGroup = ctl
mcolEvents.Add cBtnEvents
End If
Next

End Sub


And create a Class module (call it clsUserFormEvents) module, with this code

Option Explicit

Public WithEvents mButtonGroup As msforms.CommandButton

Private Sub mButtonGroup_Click()
MsgBox mButtonGroup.Caption & " has been pressed"
End Sub


--
---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
You could put most of the code in a separate macro or function and have the
command buttons call the macro/function (passing it the folder to open and
the textbox control in which the filename s/b placed).

But you would still need a click event for each button.
 
Hey Bob,
Thanks again. I got that to work with the form that I have but I don't
know how to get to the next stage. Instead of showing a message box I want it
to open the Open File Dialog to a specific folder. Do I have to creat another
class for that? I am lost again. Help, please.

Ayo
 
No, just change my throw-away example code, the MsgBox, with your real code,
the FileDialog.

--
---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
Thanks for everything so far Bob, but I am going to ask for your help once
more if you don't mind. It seems I take 5 steps forward and three steps back.
It looked like I got it to work the way it should then all of a sudden, it's
not working any more. I guess I need someone else to look the code over for
me and maybe see what I don't see. I would reaally appreciate it if you can
look at this and maybe tell me what I am doing wrong.

Thanks
Ayo

Option Explicit

Public WithEvents mButtonGroup As msforms.CommandButton

Private Sub mButtonGroup_Click()
Dim btn_num As String
'MsgBox mButtonGroup.Caption & " has been pressed"
btn_num = Right(mButtonGroup.Name, Len(mButtonGroup.Name) - 6)
assignFiles btn_num
End Sub

Sub assignFiles(btn_num As String)
Dim getFolder As String
Dim fl As FileDialog
Dim ctl As Control
Dim vrtSelectedItem As Variant

Set fl = Application.FileDialog(msoFileDialogFilePicker) '.InitialFileName

With fl
For Each ctl In frmOpenFiles.Controls
If TypeName(ctl) = "TextBox" Then
If Len(ctl.Name) = 6 Then
If Right(ctl.Name, 1) = btn_num Then GoTo Get_File

ElseIf Len(ctl.Name) = 7 Then
If Right(ctl.Name, 2) = btn_num Then GoTo Get_File

End If
End If
Exit Sub
Next ctl
Get_File:
.InitialFileName = ctl.Value
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
getFolder = vrtSelectedItem
Next vrtSelectedItem
End If
If getFolder = Empty Then
MsgBox "You Must select a file to continue. Please Try Again."
Exit Sub
ElseIf getFolder <> Empty Then
ctl.Text = getFolder
End If
End With

End Sub
 
Back
Top