Comparar celdas en varias hojas

4 envíos / 0 nuevos
Último envío
nachico95
Imagen de nachico95
Offline
última acción: Hace 5 años 8 meses
alta: 05/07/2018 - 15:06
Puntos: 185
Comparar celdas en varias hojas

Hola,
Acabo de iniciarme en la programación de VBA. Quiero crear un macro para infinitas hojas pero por alguna razón no me sale correctamente. El objetivo es que el usuario inserte el número del cliente, y posteriormente en la misma hoja se generen automáticamente los datos del cliente. El libro del excel se va a organizar con la primera hoja para el usuario y el resto de hojas clientes. He pensado el siguiente procedimiento:

Paso 1: El usuario inserta el numero de cliente en hoja 1(en este caso celda B3)
Paso 2: Quiero que lea en todas las hojas del excel (que se llamaran 1, 2(por el número de cliente)) y la celda A1(en este caso) tendrá el numero del cliente.
Paso 3: Coger los datos del cliente(Hoja 2 celda A3) y copiarlos en la hoja 1(en este caso celda A4)

Todos los posicionamientos de las celdas se pueden variar.

Pongo el programa que he pensado para dos hojas que funciona, pero no se realizarlo con FOR:

Dim a as integer
Dim i as integer
Sub cliente()
a=0
if Sheets(1).Range("B3")= Sheets(2).Range("A1") then
Sheets(2). Range("A3").Copy Destination:=Sheets(1). Range ("A4")
if Sheets(1).Range("B3")= Sheets(3).Range("A1") then
Sheets(3). Range("A3"). Copy Destination:=Sheets(1). Range ("A4")
end if
end if
end sub

De esta manera funcionaria pero hay muchísimos clientes(por ejemplo 10), entonces he intentado con FOR pero no me sale

Dim a as integer
Dim i as integer
Sub cliente()
a=0
i=2
For i=2 to 11 'La primera hoja no hay que revisarla
if Sheets(1).Range("B3")= Sheets(i). Range("A1") then
a= Sheets(i). Range("A1")
Debug.Print Sheets(1).Range("A4").a
else 
i=i+1
end if
next
end sub

Muchas gracias de antemano

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 9 horas 48 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Si el nombre de la hoja es el

Si el nombre de la hoja es el número de cliente ¿para qué necesitas un bucle? dirígete directamente a la hoja del cliente 

Worksheets(tucliente)

 

------
Ya sé Excel, pero necesito más.

nachico95
Imagen de nachico95
Offline
última acción: Hace 5 años 8 meses
alta: 05/07/2018 - 15:06
Puntos: 185
Muchas gracias por tu

Muchas gracias por tu respuesta, 

El problema se me genera, en que introduzco el numero del cliente(25000, es el numero del cliente numero 1, es incambiable)y luego se va a la hoja numero 25000 y no a la hoja 2 del libro que es la que se llamaría 25000.

Pongo el código por si alguien me puede ayudar, muchas gracias.

____________________________________________________________________________

Dim a As Integer

Dim i As Integer

Sub leercliente()

tuCliente = 0

tuCliente = Sheets(1).Range("B3")

 

Sheets(tuCliente).Range("A3").Copy Destination:=Sheets(1).Range("A4")

End Sub

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 9 horas 48 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Las hojas de Excel tienen

Las hojas de Excel tienen internamente un número (hoja número 1, hoja número 2, ...), aparte cada hoja tiene su nombre, que es un texto. La confusión para Excel viene porque tus nombres se pueden interpretar como números, entonces en vez de el nombre "25000" interpreta el número 25000

Para forzar que no convierta en número utiliza una variable de tipo texto 

 

o bien declaras tu variable como String

Dim tuCliente as String

 

o bien fuerzas la conversión a Texto cuando te refieras a la hoja

Sheets(CStr(TuCliente))...

 

así te aseguras que Excel entiende que quieres la hoja con nombre "25000"

 

 

------
Ya sé Excel, pero necesito más.