Неа - вы должны проверить каждый из них и затем очистку в конце
Dim Temp As String
If Not IsNull([Conference]) Then
Temp = Temp & [Conference] & " - "
End If
If Not IsNull([Speaker]) Then
Temp = Temp & [Speaker] & " - "
End If
If Not IsNull(partstr) Then
Temp = Temp & partstr & " - "
End If
If Temp > "" then
Me.Title.Value = Left(Temp, Len(Temp) - 3)
Else
Me.Title.Value = Null
End If
После доработки с общей функцией:
Public Function JoinEx(ByVal pArray As Variant, ByVal pDelimiter As String) As String
Dim sTemp As String
Dim iCtr As Integer
For iCtr = 0 To UBound(pArray)
If Not IsNull(pArray(iCtr)) Then
sTemp = sTemp & pArray(iCtr) & pDelimiter
End If
Next
If sTemp > "" Then
JoinEx = Left(sTemp, Len(sTemp) - Len(pDelimiter))
End If
End Function
Вызов Пример:
JoinEx(Array("one","two","three"), " - ") 'Returns "One - Two - Three"
JoinEx(Array(null,"two","three"), " - ") 'Returns "Two - Three"
Я все еще надеюсь на лучший ответ, я сделаю это несколько раз и не хочу дублировать так много кода. – Thelema 2008-11-25 19:24:04
Я чувствую вашу боль, но с небольшой работой вы можете создать общую функцию, которая принимает массив и разделитель и возвращает строку. – 2008-11-25 19:27:51