Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VBA] Конкатенация строк


Автор: Ki11eR0k 22.12.2006, 08:19
Всем привет. Помогите сделать задание и прокомментировав каждую строчку кода. Пользовательская функция с необязательными параметрами. Функция возвращает конкатенацию строк, содержащихся в ячейках диапазона – первого аргумента. Второй необязательный элемент задаёт количество пробелов между соединёнными строками ячеек.
Всё это нужно сделать к воскресенью. Кто отзовётся большое спасибо.

Автор: Genyaa 22.12.2006, 08:54
Код

Public Function СЦЕПЯЧЕЙКИ(Optional rr As Range = Nothing, Optional sp As Long = 1) As String
'пользовательская функция - возвращает конкатенацию текста ячеек области, указанной в аргументе
'rr - область ячеек (если пропущен - то пусто)
'sp - количество пробелов (если пропущен - то 1)
'
'объявляем локальную переменную, использующуюся в цикле для области одной очередной ячейки
    Dim r As Range
'начальное значение - пустая строка нулевой длины
    СЦЕПЯЧЕЙКИ = ""
'если rr пропущен - то выходим из функции - при этом значение функции = пустая строка нулевой длины
    If rr Is Nothing Then Exit Function
'если sp<0 заменим на 0
    If sp < 0 Then sp = 0
'цикл по всем ячейкам области аргумента
    For Each r In rr.Cells
'конкатенация каждой следующей ячеки с текущим значением функции
'если sp =0, то пробелов нет
        СЦЕПЯЧЕЙКИ = СЦЕПЯЧЕЙКИ & Space(sp) & r.Text
    Next r
'уберем лидирующие пробелы из результата
    СЦЕПЯЧЕЙКИ = LTrim(СЦЕПЯЧЕЙКИ)
End Function


Автор: Genyaa 22.12.2006, 11:40
по просьбе, выкладываю пример использования функции.

Автор: Ki11eR0k 22.12.2006, 11:55
Genyaa, спасибо,всё работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)