Ошибка Sub или Function undefined при попытке объединения нескольких строк в одну ячейку в VB

Ошибка Sub или Function undefined при попытке объединения нескольких строк в одну ячейку в VB

Сегодня на работе я пытался сделать быстрый инструмент для автоматизации некоторых задач, но столкнулся с проблемой получения ошибок Sun или Function. Я абсолютный новичок в VB и не знаком с синтаксисом и/или особенностями языка. Не могли бы вы мне помочь? Подробности того, что я пытаюсь сделать: По сути, у меня есть несколько групп (всего 4 ячейки в каждой группе), которые я пытаюсь скопировать в одну ячейку. Вот так:

Группа1: ячейка1 ячейка2 ячейка3 ячейка4

Группа2: . . . Каждую из этих групп необходимо скопировать в отдельные ячейки.

Вот код:

Public Sub GlobalConcatenation()
    Dim sourcerange As Range
    Dim gbegin As Integer
    Dim gend As Integer
    gbegin = 2
    gend = 5
    sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin), Cells(2, gend))
    Dim i As Integer
    For i = 2 To 50
        callConcatinateAllCellValuesInRange (sourcerange)

        sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin + 4), Cells(2, gend + 4))
End Sub
Function ConcatinateAllCellValuesInRange(sourcerange As Excel.Range) As String
    Dim finalValue As String

    Dim cell As Excel.Range

    For Each cell In sourcerange.Cells
        finalValue = finalValue + CStr(cell.Value)
    Next cell

    ConcatinateAllCellValuesInRange = finalValue
End Function

EDIT: Я чувствую, что мне также нужно указать, что проблема проявляется в функции GlobalConcatenation(), и всякий раз, когда я получаю ошибку, подсвечивается «sourcerange».

EDIT: обновил код - исправил орфографическую ошибку

решение1

Это произошло из-за орфографической ошибки в этой строке gbeging:

Неправильный:-

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbeging), Cells(2, gend))

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbeging + 4), Cells(2, gend + 4))

Правильный ответ:-

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin), Cells(2, gend))

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin + 4), Cells(2, gend + 4))

решение2

Наиболее вероятной причиной вашей ошибки являются неквалифицированные ссылки на ячейки в строках типа

sourcerange = Sheets("raw_LSToolData").Range(Cells(2, gbegin), Cells(2, gend))

Cells(2, gbegin)ссылается на ячейку на активном листе. Если это не так, то raw_LSToolDataвозникнет ошибка

Правильный код:

sourcerange = Sheets("raw_LSToolData").Range(Sheets("raw_LSToolData").Cells(2, gbegin), Sheets("raw_LSToolData").Cells(2, gend))

Лучший способ - это

with Sheets("raw_LSToolData")
    sourcerange = .Range(.Cells(2, gbegin), .Cells(2, gend))
end with

Обратите внимание на .' перед Rangeand Cells- это ссылка на withобъект предложения

Связанный контент