Error indefinido de sub o función al intentar concatenar varias cadenas en una celda en VB

Error indefinido de sub o función al intentar concatenar varias cadenas en una celda en VB

Hoy estaba tratando de crear una herramienta rápida en el trabajo para automatizar algunas tareas en el trabajo, pero me encontré con el problema de obtener un error de Sun o de función. Soy un novato absoluto en VB y no estoy familiarizado con la sintaxis ni con los detalles del idioma. ¿Me podría ayudar? Detalles sobre lo que intento hacer: Básicamente, tengo varios grupos (solo 4 celdas en cada grupo) que estoy tratando de copiar en una sola celda. Como esto:

Grupo1: celda1 celda2 celda3 celda4

Grupo 2: . . . Cada uno de esos grupos debe copiarse en celdas separadas.

Aquí está el código:

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

EDITAR: Siento que también necesito especificar que el problema aparece en la función GlobalConcatenation() y cada vez que aparece el error, se resalta "sourcerange".

EDITAR: actualicé el código - se corrigió el error de ortografía

Respuesta1

Esto se debe a un error ortográfico en esta línea en gbeging:-

El equivocado:-

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

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

Corriga uno:-

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

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

Respuesta2

La causa más probable de su error son las referencias no calificadas a celdas en líneas como

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

Cells(2, gbegin)se refiere a una celda de la hoja activa. Si esto no es raw_LSToolDataun error resultará

El código correcto es

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

Una mejor manera es

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

Tenga en cuenta .que antes Rangey Cells- esto hace referencia al withobjeto de cláusula

información relacionada