Copiar datos de una hoja a otra, hay datos en la hoja y datos en una tabla insertada en la misma hoja

Tengo una macro que copia información de una hoja a otra pero cuando la ejecuto entrega un mensaje que dice: se ha producido el error '9' en tiempo de ejecución: Subíndice fuera del del intervalo.

La hoja de destino es una base de datos (un rango de hoja de calculo dispuesto en columnas) donde se va copiando la información para ir dejando un hostórico. Ojala álguien pueda ayudarme a solucionar mi problema... Lo que yo pienso es que sobre paso el límite de información copiada. Aporto la siguiente información:

Desde la fila 2 a la 6 son celdas que fueron nombradas como rangos (se les puso nombre a las celdas); en la fila 9 comienza la tabla que contiene 12 columnas. Esta es la información que se copia.

La información del formulario llega a esta hoja...

Y este es el codigo ocupado y el mensaje que me entrega. Este código fue proporcionado por EXCELeINFO.

1 respuesta

Respuesta
1

La variable NombreHoja va sin comillas:

With ThisWorkbook.Sheets(NombreHoja)

Nota: En futuras publicaciones, no pongas el código en una imagen, pon el código utilizando el icono para insertar código.

[Al final de mi respuesta hay un botón para valorarla.

La variable NombreHoja va sin comillas:

With ThisWorkbook.Sheets(NombreHoja)

Dante muchas gracias por responderme, corregí el dato pero al ejecutar el código me entrega el mismo mensaje.

Será que hay un límite de datos a copiar en la otra hoja... Saludos cordiales.

Option Explicit
Sub GuardarVoucher()
Dim NombreHoja As String
Dim HojaDestino As Range
Dim NuevaFila As Integer
Dim FilasVoucher As Integer
Dim i As Integer
Dim j As Integer
'Dim NroVoucher As Integer

NombreHoja = "BDVoucher"
FilasVoucher = Application.WorksheetFunction.CountA(Range("DetalleVoucher[Rut]"))
'NroVoucher = ThisWorkbook.Sheets("Voucher").Range(NroVoucher).Value
With ThisWorkbook.Sheets(NombreHoja)
For i = 1 To FilasVoucher

Set HojaDestino = ThisWorkbook.Sheets(NombreHoja).Range("A1").CurrentRegion 'HojaDestino
NuevaFila = HojaDestino.Rows.Count + 1
.Cells(NuevaFila, 1).Value = Range("Institucion").Value
.Cells(NuevaFila, 2).Value = Range("Proyecto").Value
.Cells(NuevaFila, 3).Value = Range("CodProyecto").Value
.Cells(NuevaFila, 4).Value = Range("Banco").Value
.Cells(NuevaFila, 5).Value = Range("CtaCte").Value
.Cells(NuevaFila, 6).Value = Range("Fecha").Value
.Cells(NuevaFila, 7).Value = Range("FolioBco").Value
.Cells(NuevaFila, 8).Value = Range("TipoPago").Value
.Cells(NuevaFila, 9).Value = Range("Glosa").Value
.Cells(NuevaFila, 10).Value = Range("TipoVoucher").Value
.Cells(NuevaFila, 11).Value = Range("NroVoucher").Value
For j = 1 To 12
.Cells(NuevaFila, j + 11).Value = ThisWorkbook.Sheets("Voucher").Cells(9 + i, 1 + j)
Next j
Next i
End With
MsgBox "Alta exitosa", vbInformation, "Info DEM"
End Sub

Hola, revisé el código le hice varias pruebas y no me funciona, quizás se deba a una de estas causas:

a) Que, estoy traspasando 23 datos a la otra hoja y con esto estoy sobrepasando algún límite,

b) Que, estoy utilizando excel 365 y quizás el código entra en conflicto con esta versión,

c) Que, definitivamente en alguna parte omití algún paso o detalle importante

d) Que, el uso de formularios userform esté interfiriendo en alguna parte del desarrollo.

Bajé de la página del autor el archivo original y al ejecutarlo funciona sin problemas pero el archivo mío que tiene un código muy similar al del autor me ha dejado definitivamente tirado. Por favor amigo Dante u otro colaborador necesito luces para seguir... muchas gracias. Waldo...

NombreHoja = "BDVoucher"

La Hoja "BDVoucher" debe existir, según tu imagen, esa hoja no existe.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas