Excel Dropdown list. Multiple items in a string

In the attached file:
DropDown sheet contains 2 Named Ranges
1. DaysOfWeek in Col A
2. Daily Start Times in Col B

STudentRoster contains 3 Named Ranges
1. Student Name in Col A       eg. AAA
2. Days Attending  in Col B     eg MonWedFri
3. Daily End Time in Col C       eg  1500

For each Student I want to be able to select:
1.  multiple Days from Days of Week (in DropDowns sheet) ,  concatenate the Days selected  and enter the  result in Days Attending (Student Roster sheet)

2. Select a value from Daily End Times (in DropDowns sheet) and enter the value in
   Daily End Time (in Student Roster sheet)

A VBA solution would be preferable

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

AndyAinscowFreelance programmer / ConsultantCommented:
ps.  EE is for asking questions about how to do something.  It isn't a place to give an 'order' for a piece of code.
Explaining what bit you can't do is also useful.
lifeactuaryAuthor Commented:
Sorry. I didn't intend to mean it as an "order" Any advice as to how to achieve the results I'm looking for would be great.

byundtMechanical EngineerCommented:
The different Topic Areas may have different expectations regarding coding.

AndyAinscow is very active in Kernel And Operating System Specific Programming and in Windows MFC Programming, and has a Genius rating in each. I'd be quite willing to believe that the expectation is that people posting in those TAs have a full-time job doing programming, so they are looking for a tip or advice on overcoming a vexing issue.

I am active in the Excel, and in that TA we are much more willing to write short macros for people. The definition of short will vary with the Expert, but most of us are willing to write up to a hundred lines of code or so. That ought to be enough for your immediate task.

The starting point, however, is for you to specify which version of Excel you are using, and to post a sample workbook showing sample inputs and desired results. In this case, data for 3 imaginary students ought to suffice.

Rowby Goren Makes an Impact on Screen and Online

Learn about longtime user Rowby Goren and his great contributions to the site. We explore his method for posing questions that are likely to yield a solution, and take a look at how his career transformed from a Hollywood writer to a website entrepreneur.

lifeactuaryAuthor Commented:
Hi Brad:
Thanks for the tip.
In the attached sheet, I've included an explanation of what I'm trying to accomplish.
Hope this is what you're looking for.
Again, thanks.
AndyAinscowFreelance programmer / ConsultantCommented:
Nicely put Brad, that is part of it.
Give a man a fish and you feed him for a day.
Teach a man to fish and you feed him for a lifetime.

I strongly believe it is best to try first oneself and be given advice on the bits one can't achieve.  It is so easy to say I'll study the code tomorrow when given a complete solution.
byundtMechanical EngineerCommented:
While you may have tried twice, you haven't actually succeeded in attaching a workbook.

Please review the step by step instructions in my opening Comment.

lifeactuaryAuthor Commented:
Thought I was doing it as u told me but guess not.
Any, I hope you got what I just sent. May have sent more than one. Sorryfor the agg.

<<Ed subsequently mailed byundt the file. He attached it at 6:20 PM CST on 12/30/13>>
byundtMechanical EngineerCommented:
If you email the file to me, I'd be glad to post it for you. My address is my screen name at Experts-Exchange.com

If you have already done so (as of your latest Comment), please double-check the address as I have not received it.

byundtMechanical EngineerCommented:
I got the file and (wearing my Topic Advisor hat) attached it to your last Comment.

byundtMechanical EngineerCommented:
I decided to display a userform with checkboxes to pick the days of the week. This userform is triggered by clicking on a cell in column B using a Worksheet_SelectionChange event sub. The checkboxes will prepopulate with any previous choices the user might have made. If the user clicks OK, the boxes checked will be concatenated as requested. If the "X" in upper right corner or Cancel are clicked, then no change is made.

I used a data validation dropdown for the daily ending time selection. It uses a dynamic named range to restrict the choices to values entered in column C of the DropDowns worksheet. The Refers To property of that named range is:

Code for the event sub and userform follow:
'This code goes in the code pane for worksheet StudentRoster
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range, targ As Range
Set targ = Range("StudentName").EntireRow.Columns(2)
Set targ = Intersect(targ, Target)
If targ Is Nothing Then Exit Sub

Application.EnableEvents = False
For Each cel In targ.Cells
Application.EnableEvents = True
End Sub

Open in new window

'This code goes behind the userform
Dim cel As Range, targ As Range

Private Sub cmdCancel_Click()
Unload UserForm1
End Sub

Private Sub cndOK_Click()
Dim s As String
If cbMonday.Value = True Then s = s & "Mon"
If cbTuesday.Value = True Then s = s & "Tue"
If cbWednesday.Value = True Then s = s & "Wed"
If cbThursday.Value = True Then s = s & "Thu"
If cbFriday.Value = True Then s = s & "Fri"
If cbSaturday.Value = True Then s = s & "Sat"
If cbSunday.Value = True Then s = s & "Sun"
targ.Value = s
Unload UserForm1
End Sub

Private Sub UserForm_Initialize()
Dim s As String
Set cel = ActiveCell
Set targ = cel.EntireRow.Range("B1")
s = targ.Value
lblName.Caption = cel.EntireRow.Range("A1").Value
cbMonday.Value = InStr(1, s, "Mon", vbTextCompare) > 0
cbTuesday.Value = InStr(1, s, "Tue", vbTextCompare) > 0
cbWednesday.Value = InStr(1, s, "Wed", vbTextCompare) > 0
cbThursday.Value = InStr(1, s, "Thu", vbTextCompare) > 0
cbFriday.Value = InStr(1, s, "Fri", vbTextCompare) > 0
cbSaturday.Value = InStr(1, s, "Sat", vbTextCompare) > 0
cbSunday.Value = InStr(1, s, "Sun", vbTextCompare) > 0
End Sub

Private Sub UserForm_Terminate()
Unload UserForm1
End Sub

Open in new window


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
lifeactuaryAuthor Commented:
When I try to open the file I get a message:

"The Visual Basic Applications (VBA) macros in this workbook are corrupted and have been deleted. The macro corruption most likely exists in the current file. To recover the macros, open a backup copy of this file if you have one."
lifeactuaryAuthor Commented:
OK. Did a repair on Office and rebooted. Seems to have cleared it up.
I'll work with it and get back to you
byundtMechanical EngineerCommented:
This question was answered by code (and a sample workbook) posted in https:#a39747558 

The proposed solution is written in VBA (as requested) and satisfies both objectives requested in the question body.

I just downloaded the workbook and confirmed that it works exactly as claimed.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Applications

From novice to tech pro — start learning today.