Not per se, at least not as to how (if possible) to get DV to use a UDF. I saw (did not try) one response indicating to use a Name to refer to the Function and use the Name in the DV, but I did not try. I barely searched (using Bing) and a couple of responses indicated that if the List was literal (rather than referring to a Range), that the Case then gets enforced.
I used:
Excel UDF with Data Validation
excel enforce case in data validation
as search terms.
Anyways, I am not sure how long a string you can supply List, but for your example wb, I tried this (which seems to work) :
In ThisWorkbook Module:
Option Explicit
Private Sub Workbook_Open()
example
End Sub
In a Standard Module:
Option Explicit
Sub example()
Dim arr_strAcceptableVals() As Variant
Dim strList As String
Dim n As Long
With Sheet1
arr_strAcceptableVals = .Range("NamedRange").Value 'DropDownRange"
For n = 1 To UBound(arr_strAcceptableVals)
strList = strList & arr_strAcceptableVals(n, 1) & ","
Next
strList = Left$(strList, Len(strList) - 1)
Debug.Print ">" & strList & "<"
With .Range("DropDownRange").Validation
.Delete
.Add xlValidateList, xlValidAlertStop, xlBetween, strList
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = vbNullString
.ErrorTitle = vbNullString
.InputMessage = vbNullString
.ErrorMessage = vbNullString
.ShowInput = True
.ShowError = True
End With
End With
End Sub
Hopefully you will find that the literal string doesn't exceed whatever limit may exist.
Does that help?
Mark