Я думаю, что лучший способ сделать это - «очистить» строку, чтобы удалить лишние запятые перед разбиением. Однако, как отмечает @Gustaf, у вас может быть более двух запятых подряд. Поэтому возможное решение состоит в том, чтобы итеративно удалять лишние запятые, пока у вас их нет. Такая функция выглядит так:
' given a string that contains consecutive commas (e.g. abc,,def,,,ghi),
' removes all but the first commas (e.g. abc,def,ghi
Public Function RemoveDuplicateCommas(ByVal s As String) As String
Do While InStr(1, s, ",,", vbBinaryCompare) > 0
s = Replace(s, ",,", ",")
Loop
RemoveDuplicateCommas = s
End Function
Чтобы использовать эту функцию, сделайте что-то вроде этого:
strSQL = "1,2,3,,4,,,5"
strSQL = RemoveDuplicateCommas(strSQL)
?strSQL
1,2,3,4,5
?join(split(strsql, ","), ",")
1,2,3,4,5