I am running into a bit of a snag with the above code. I got the code to work but I am struggling to add some additional code that will automatically display the 1st item in the list. Any ideas on how to modify the code to pick the first item in the drop down? Also if I change this from a Sub() to a Private Sub() will that run the VBA when opening the workbook? I am hoping that it runs when the workbook opens and then chooses the first item from the drop down list. Thanks in advance.

Option Explicit

Sub CreateList(SheetName As String, CellName As String, LookupString As String)
' SheetName = Sheet where you want the drop-down list
' CellName = Address of the cell where you want the drop-down

Dim Sh As Worksheet             ' General pointer to sheets in the workbook
Dim shD As Worksheet            ' Pointer to the sheet on which you want the drop-down
Dim ListString As String        ' List of the sheet names

' Initalize variables
Set shD = Sheets("HOME")
ListString = "UnitAccess"


' "Remove" the trailing comma from the string
ListString = LookupString
' Make the validation
With shD.Range("L20").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=ListString
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With
End Sub
Sub ApplyLookup()
CreateList "HOME", "L20", Range("UnitAccess")
End Sub