I'm creating a calendar that has specific employees listed in a number of rows and columns corresponding with a date/time. I've used data validation to select the employees needed in these time slots, with the drop downs occurring in many rows and columns.
I have found some VBA code that allows me to select multiple users via dropdown list, sorted by a comma, and would like to find a way to have those selections copied to another worksheet in a "all column". My intention is to see what % of total time available each employee is scheduled in a workweek.
My ideal result would be: select employee from drop down > name is copied to a column in another worksheet. If the name is removed from the drop down cell, it is removed from the target worksheet.
Below is the code I have borrowed so far (I'm very new at this):
I have found some VBA code that allows me to select multiple users via dropdown list, sorted by a comma, and would like to find a way to have those selections copied to another worksheet in a "all column". My intention is to see what % of total time available each employee is scheduled in a workweek.
My ideal result would be: select employee from drop down > name is copied to a column in another worksheet. If the name is removed from the drop down cell, it is removed from the target worksheet.
Below is the code I have borrowed so far (I'm very new at this):
Code:
Private Sub Worksheet_Change(ByVal Target As Range)Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim strVal As String
Dim i As Long
Dim lCount As Long
Dim Ar As Variant
On Error Resume Next
Dim lType As Long
If Target.Count > 1 Then GoTo exitHandler
lType = Target.Validation.Type
If lType = 3 Then
Application.EnableEvents = False
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal
If oldVal = "" Then
Else
If newVal = "" Then
Else
On Error Resume Next
Ar = Split(oldVal, ", ")
strVal = ""
For i = LBound(Ar) To UBound(Ar)
Debug.Print strVal
Debug.Print CStr(Ar(i))
If newVal = CStr(Ar(i)) Then
strVal = strVal
lCount = 1
Else
strVal = strVal & CStr(Ar(i)) & ", "
End If
Next i
If lCount > 0 Then
Target.Value = Left(strVal, Len(strVal) - 2)
Else
Target.Value = strVal & newVal
End If
End If
End If
End If
exitHandler:
Application.EnableEvents = True
End Sub