Copiar una hoja a otra indicándole el nombre

Hola, estoy intentando copiar un rango de datos de una hoja (comedor) a otra creada de nuevo e insertando su nombre mediante un inputbox. Me crea la hoja pero no pega los valores del rango que le he dado. El código es éste:

Sub ejemplo_variación()
Sheets("comedor").Select
Range("b5:j50").Copy


hoj = Application.InputBox("Nombre de la hoja", "Copiar hoja", Type:=2)
Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = hoj


Sheets(hoj).Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues '(aquí me da el error)
Application.CutCopyMode = False
End Sub

Un saludo y muchas gracias por su contestación.

2 Respuestas

Respuesta
1

De esta forma quedaría

Sub ejemplo_variación()
Sheets("comedor").Select
hoj = Application.InputBox("Nombre de la hoja", "Copiar hoja", Type:=2)
Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = hoj
Sheets("comedor").Range("b5:j50").Copy
Sheets(hoj).Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues '(aquí me da el error)
Application.CutCopyMode = False
End Sub

El problema está, que primero copias, luego solicitas el nombre y en ese momento ya no tienes la selección de copy, ya se perdió, por lo que debes, primero pedir el nombre, crear la hoja, copiar y luego pegar.

Saludos. Dam

Respuesta
1

Que sí, que yo he probado eso mismo y me da el mismo error. Pero que por más que pruebo no consigo arreglarlo, no entiendo por qué.

Voy a seguir intentándolo, me tiene mosqueado.

Ya está resuelto.

El error se debía a que la sentencia del InputBox hacía que se perdiese el contenido del portapapeles. Siempre que se hace una operación de copiar y pegar hay que tener cuidado con lo que se hace entre medias, mejor hacer inmediatamente el pegado.

Entonces basta con cambiar el orden creando la hoja antes de copiar para que funcione.

Sub ejemplo_variacion()

hoj = Application.InputBox("Nombre de la hoja", "Copiar hoja", Type:=2)
Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = hoj
Sheets("comedor").Select
ActiveSheet.Range("b5:j50").Copy
Sheets(hoj).Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

End Sub

Y con esto evitamos ese error.

Muchas gracias por tu interés, ya había solucionado el problema pero no me había acordado de finalizar.

Perdón y gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas