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_LSToolData
un 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 Range
y Cells
- esto hace referencia al with
objeto de cláusula