Я изменил строку For Each cell
вашего кода, чтобы он работал:
Function Join(rng As Range, delimiter As String) As String
Dim cell As Range, rowIndex As Long
For rowIndex = 1 To rng.Rows.Count
For Each cell In Range(rng(rowIndex, 1), rng(rowIndex, rng.Columns.Count))
Join = Join & cell.Text & delimiter
Next cell
Join = Left(Join, Len(Join) - Len(delimiter)) & vbCrLf
Next rowIndex
End Function
Чтобы понять разницу ... Я начал с вашей строки:
For Each cell in rng(cells(rowIndex,3), cells(rowIndex,11))
-Проблема в том, что мы используем свежие Range
- это подмножество rng
, но они свежие, поэтому:
For Each cell In Range(rng(rowIndex, 1), rng(rowIndex, 9))
-Это работает хорошо, но затем, чтобы сделать его более динамичным, япоменялось 9 для числа столбцов:
For Each cell In Range(rng(rowIndex, 1), rng(rowIndex, rng.Columns.Count))