Crear macro en vb para Excel

En la hoja 1 columna A puedo tener1 o muchos registros

En la hoja 2 celda A1 debir colocar el numero del primer registro de la hoja 1 luego selecciono un rango y lo copio en la hoja 3 como solo valores.

Cada vez debo ir a la hoja 2 columna A1 y escribir el numero del siguiente registro de la hoja 1 y hacer lo mismo, que es seleccionar un rango y copiarlo en la hoja 3 como solo valores.

De tal forma que me llame todos los registros de la hoja 1

1 respuesta

Respuesta
1

Un par de cuestiones. Adivino que en la columna A de la Hoja1 están los números de registro que deben copiarse en la columna A de la Hoja2 amén de los datos que pudiera haber en el resto de columnas. ¿Esto es así?

Lo siguiente, debes mostrar el rango que seleccionas para pegar en la hoja3

Por último, ¿en qué parte de la Hoja3 hay que pegar los datos? ¿En la primera fila libre? ¿También se copiaría el número de registro en esta hoja?

Necesito esta información.

Buenas tardes mfervic

Gracias por su atención,le voy a explicar bien lo que tengo: en la hoja 1 tengo una base de datos del personal que ingresa a laborar. Es decir el primer registro es algo así:

A3=un numero cualquiera

B3=nombre de la persona

C3= numero de documento de identidad

D3=salario

La hoja 2 es de asistencia del personal la cual esta formulada y me trae cada uno de los registros de la hoja 1 y aquí manualmente se intrducen los horarios de las personas.

En la hoja 3 se procesa la información de los horarios de trabajo para el respectivo pago.con tan solo hacer referencia a la hoja 2 de asistencia .de la siguiente manera:

siempre en la celda A3 de la hoja 3 se escribe la referencia del primer registro de la hoja 2 es decir =!hoja2 A3 y esta referencia trae el numero del registro que tiene los horarios de trabajo y nos arroja un resultado de lo que se debe pagar y este es el rango que se selecciona y se copia en la hoja 4 como solo valores.

Entonces necesito cada vez ir a la celda A3 de la hoja3 y hacer referencia al siguiente registro de la hoja 2 y repetir el procedimiento anterior que es: seleccionar el rango copiar y pegar como solo valores en la hoja4 así hasta hacer todas las referencias de los registros de la hoja 2.

Esta es la macro que necesito.

Creo que ya he entendido el problema. Lo que tienes en la hoja3 es como un desplegable del que toma el número de registro. A continuación, a mano, seleccionas los datos y pegas en la hoja4 como solo valores. El problema que es un "rollo" hacerlo uno por uno. Si esto es así, vamos a automatizarlo con lo que te propongo que coloques un botón de formulario que te haga la tarea. Para ello abre el proyecto y escribe este código en un módulo:

Option Explicit
Sub copiar_click()
'escribe el nombre real de la hoja4 en esta constante
Const destino = "Hoja4"
'escribe la celda real del número de referencia del registro
Const raíz = "A3"
'Variables para el proceso
Dim i As Integer, r As Integer, c As Integer
Dim hoja As String
Application.ScreenUpdating = False
'inicio la variable hoja con la actual
hoja = ActiveSheet.Name
'me coloco en la celda referencia
Range(raíz).Select
'elimino otra selecciones si las hubiere
Application.CutCopyMode = False
'como no se cuantos campos son el registro, copio la fila entera
ActiveCell.EntireRow.Copy
'me muevo a la hoja4
Sheets(destino).Select
'selecciono la celda referencia
Range(raíz).Select
'inicio variables
r = ActiveCell.Row
c = ActiveCell.Column
i = 0
'busco la primera fila vacía
Do While Cells(r + i, c).Value <> ""
i = i + 1
Loop
'una vez encontrada, pego la fila con solo valores
Cells(r + i, c).Select
'pego la selección formato y valores
Selection.PasteSpecial Paste:=xlValues
Selection.PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
'regreso a la hoja anterior
Sheets(hoja).Select
Application.ScreenUpdating = True
End Sub

A continuación en la hoja tres te creas el botón y le asignas la macro.

Ya me contarás como te ha ido

Buenos días mfervic

Le voy a indicar con precisión los nombres de las hojas y el rango que debo copiar de acuerdo con la información que le he enviado:

La hoja1 se llama INF y el primer registro esta en la celda B9

La hoja 2 se llama ASIST y el primer Registro esta en la celda B9

La hoja 3 se llama RAÍZ y en la celda celda C5 es donde debemos ir escribiendo las referencias de la hoja ASIST así: =ASIST!B9 luego selecciono el rango AA5:AO11 y lo copio como solo valores en la hoja 4 que se llama DESP

Entonces siempre debo ir a la hoja raíz celda C5 y escribir la referencia de la hoja ASIST para seguir el ejemplo seria: =ASIST!B10 seleccionar el rango y copiarlo como solo valores en la hoja DESP

y así sucesivamente

=ASIST!B11 select y copiar....

=ASIST!B12 select y copiar...

Le agradezco que por favor me ayude mfervic

Buenas tardes mfervic

Gracias por su ayuda le envíe la aclaración por que la tuvo un problema la que me mandaste

Haber si damos con la tecla ahora:

Option Explicit

Sub copiar_click()

'escribe el nombre real de la hoja4 en esta constante

Const destino = "DESP"

'escribe la celda real del número de referencia del registro

Const referencia = "C5"

'constante del rango

Const rango = "AA5:AO11"

'Variables para el proceso

Dim i As Integer, r As Integer, c As Integer Dim hoja As String

Application.ScreenUpdating = False

'inicio la variable hoja con la actual

hoja = ActiveSheet.Name

'elimino otras selecciones si las hubiere

Application.CutCopyMode = False

'selecciono el rango y lo copio

Range(rango).Select Selection.Copy

'me muevo a la hoja destino

Sheets(destino).Select

'selecciono la celda donde se van a copiar los datos

Range("A1").Select

'inicio variables

r = ActiveCell.Row

c = ActiveCell.Column

i = 0

'busco la primera celda vacía

Do While Cells(r + i, c).Value <> ""

i = i + 1

Loop

'me posiciono en ella

Cells(r + i, c).Select

'pego la selección formato y valores

Selection.PasteSpecial Paste:=xlValues

Selection.PasteSpecial Paste:=xlFormats

Application.CutCopyMode = False

'regreso a la hoja anterior

Sheets(hoja).Select

Range(referencia).Select

Application.ScreenUpdating = True

End Sub

He utilizado la columna A como referencia en la hoja DESP ya que no has especificado el lugar de destino. Insisto en que debes estar en la hoja RAÍZ y crearte el botón en esta. Cada vez que insertes un código, pulsas el botón y te automatizará el proceso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas