Macro para copiar Valores en otra hoja

Tengo la siguiente macro, al ejecutarla en modo desarrollador corre bien. Pero cuando la ejecuto desde el botón me cambia los valores, Yo pienso que es por los comando de active. Podrían indicarme como debería ser esta macro para que copie bien los datos que quiero. Saludos

Tengo Información en una hoja Llamada "Factura" y otra Información en una hoja Llamada "Format," y deberían copiar datos de ambas Hojas y pegarlas en una tercera Llamada "infoventas"

"Sub PegarInfoventas()
'guardamos en variable la primer fila libre de la hoja2
libre = Sheets("infoventas").Range("A65536").End(xlUp).Row + 1
'guardamos en variable la última fila ocupada de hoja1
finfila = ActiveSheet.Range("A65536").End(xlUp).Row
'copiamos rango y pegamos 'solo valores'
ActiveSheet.Range("D5").Copy
Sheets("infoventas").Range("A" & libre).PasteSpecial Paste:=xlValues

ActiveSheet.Range("G5").Copy
Sheets("infoventas").Range("B" & libre).PasteSpecial Paste:=xlValues
'inhabilita el modo Copiar/Pegar
Application.CutCopyMode = False
'opcional borrar aquí mismo o colocar esta línea en otro botón
'ActiveSheet.Range("A2:C" & finfila) = ""
'End SubpyMode = False
'Fecha de nacimiento
Sheets("FACTURA").Range("FNAC").Copy
Sheets("infoventas").Range("C" & libre).PasteSpecial Paste:=xlValues
'Edad del primer pasajero
Sheets("FACTURA").Range("edad1").Copy
Sheets("infoventas").Range("d" & libre).PasteSpecial Paste:=xlValues
'Fecha de Emisiom

ActiveSheet.Range("I2").Copy
Sheets("infoventas").Range("F" & libre).PasteSpecial Paste:=xlValues
'fecha de emision
ActiveSheet.Range("I10").Copy
Sheets("infoventas").Range("I" & libre).PasteSpecial Paste:=xlValues
'total ticket mas fee
ActiveSheet.Range("l1").Copy
Sheets("infoventas").Range("k" & libre).PasteSpecial Paste:=xlValues
'total hotel
ActiveSheet.Range("C12").Copy
Sheets("infoventas").Range("M" & libre).PasteSpecial Paste:=xlValues
'Total Transfer
ActiveSheet.Range("C13").Copy
Sheets("infoventas").Range("N" & libre).PasteSpecial Paste:=xlValues
'Total Tour
ActiveSheet.Range("C14").Copy
Sheets("infoventas").Range("O" & libre).PasteSpecial Paste:=xlValues
'Total JR Pass
ActiveSheet.Range("C15").Copy
Sheets("infoventas").Range("P" & libre).PasteSpecial Paste:=xlValues
'Total Seguros
ActiveSheet.Range("C16").Copy
Sheets("infoventas").Range("Q" & libre).PasteSpecial Paste:=xlValues
'Total Wifi
ActiveSheet.Range("C17").Copy
Sheets("infoventas").Range("R" & libre).PasteSpecial Paste:=xlValues
'Vendedor
ActiveSheet.Range("B3").Copy
Sheets("infoventas").Range("S" & libre).PasteSpecial Paste:=xlValues
'Tipo de Negocio
ActiveSheet.Range("F6").Copy
Sheets("infoventas").Range("T" & libre).PasteSpecial Paste:=xlValues
'
'
'

End Sub

1 respuesta

Respuesta

Es muy difícil saber de donde vienen tus datos pues como tu macro lo indica ActiveSheet puede ser cualquier hoja en la que estés posicionado y tomará los datos de esa hoja, es muy importante indicarle al programa el origen de tus datos o tomará cualquiera.
Yo te sugiero que hagas algo así:

a = Sheets("infoventas")
b = Sheets("FACTURA")
c = Sheets("Format")
uf = Cells(Rows.Count, 1).End(xlUp).Row
a.Cells(uf + 1, 1).Value = c.Range("D5") 'ActiveSheet
a.Cells(uf + 1, 2).Value = c.Range("G5") 'ActiveSheet
a.Cells(uf + 1, 3) = b.Range("FNAC").Value
a.Cells(uf + 1, 4) = b.Range("edad1").Value
a.Cells(uf + 1, 6) = a.Range("I2").Value 'ActiveSheet
a.Cells(uf + 1, 2).Value = a.Range("I10")'ActiveSheet
'y asi con todos tus valores

y te evitas de estar copiando y pegando.
En donde puse 'ActiveSheet es por que no conozco el origen de tus datos y le puse cualquiera, analízalo y aplícalo.

Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas