Hej igen Sleipner,
Problemet finns rödmarkerat i nedan procedur.
Function getFormula1(drDownSourceName As String) As String
Const strStrange As String = "@#$%^"
Dim rng As Range, arr, arr1
Set rng = Range(drDownSourceName) 'set the range where from to extract the list (without blanck cells)
arr1 = rng.Value 'place the range in an array to finally drop its content back
rng.Replace "", strStrange, xlWhole 'replace the empty cells with strStrange
arr = Application.WorksheetFunction.Transpose(rng) 'place the range in a 1D array
arr = Filter(arr, strStrange, False) 'replace the former empty cells (strStrange array elements)
getFormula1 = Join(arr, ",")
rng.Value = arr1 'place back the original range content
End Function
Excel tillåter inte att man använder vissa ledande specialtecken i cellerna. Snabel-A (@) är ett sådant specialtecken. Pga. detta så fungerar inte funktionen ovan som den ska och tar inte bort tomma celler. När koden körs och skapar nya dataverifieringsregler så läggs samtliga 1000 rader som finns definierade i Namnhanteraren (Angle, Angle1 och Angle2) till i dataverifierinsfältet "Källa". Fältet "Källa" stödjer max 256 tecken, inklusive separationstecken (;) och därför blir Exceldokumentet korrupt när du sparar det och kan inte öppnas igen.
Ta därför bort @-tecknet i nedan rad:
Const strStrange As String = "@#$%^"
så den ser ut så här istället: (utan @-tecken)
Const strStrange As String = "#$%^"
Nu borde koden fungera, lycka till!