concatenation row by row:

Code:
Function ConCat_snb(delimiter As String, ParamArray CellRanges() As Variant) As String
  For Each it In CellRanges
    If VarType(it) = 8204 Then
      For j = 1 To UBound(it.Value)
        concat_snb = concat_snb & delimiter & Join(Application.Index(it.Value, j), delimiter)
      Next
    Else
      concat_snb = concat_snb & delimiter & it
    End If
  Next

  ConCat_snb = Mid(concat_snb, 2)
End Function
concatenation column by column:

Code:
Function ConCat_snb(delimiter As String, ParamArray CellRanges() As Variant) As String
  For Each it In CellRanges
    If VarType(it) = 8204 Then
      For j = 1 To UBound(it.Value, 2)
        concat_snb = concat_snb & delimiter & Join(Application.Transpose(Application.Index(it.Value, , j)), delimiter)
      Next
    Else
      concat_snb = concat_snb & delimiter & it
    End If
  Next

  ConCat_snb = Mid(concat_snb, 2)
End Function