Ejecutar macro al pegar valores en hoja

Tengo los siguientes códigos:

En hoja1 es así:

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Application.CutCopyMode
Case xlCopy
crea_tabla
End Select
End Sub

Y en un módulo del mismo libro tengo lo siguiente:

Sub crea_tabla()
'

Set h = ActiveSheet
On Error Resume Next
h.ListObjects("Tabla1").Unlist
On Error GoTo 0
ucelda = h.Range("c44").SpecialCells(xlLastCell).Address
rango = "c44:" & ucelda
h.ListObjects.Add(xlSrcRange, h.Range(rango), , xlYes).Name = "Tabla1"
End Sub

Lo que estoy tratando de lograr es que al pegar datos en la hoja me cree una tabla con los datos que hay desde la celda c44 (son variables en largo de filas). El problema es que me da el siguiente error:

"una tabla no puede superponer a otra tabla"

Al correr el código para generar la tabla este se realiza sin problemas, por lo que deduzco que el problema está en el primero pero no sé como solucionarlo. He probado otros que encontré en diferentes foros pero ninguno me ha podido ayudar.

Agradecido de su ayuda!

Respuesta
2

[Hola

Pues al parecer además de la Tabla llamada "Tabla1", hay al menos una más en esa hoja y por eso el problema mencionado. Por cierto, es un error usar On Error Resume Next cuando no es estrictamente necesario. Ah, por cierto, si crees que no hay otra Tabla, sugiero colocar tu archivo en un Drive y compartir por aquí el enlace.

Abraham Valencia

Gracias por la respuesta! 

No, definitivamente no hay otra tabla en la hoja, ya que está siempre está en blanco y al pegar los datos es cuando se llena (datos de un archivo de texto plano) la macro que genera la tabla la saqué de este mismo foro, de una respuesta anterior de Dante Amor... Y eso funciona bien. El error creo que está en el evento change de la macro qué va en la hoja como tal. Voy a tratar de subir el archivo para que pueda examinarlo. 

Saludos,

Mientras tanto prueba así:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Application.CutCopyMode
Case xlCopy
crea_tabla
End Select
Application.EnableEvents = True
End Sub

Comentas

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas