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
Jue, 05/07/2018 - 15:08
#1
Comparar celdas en varias hojas
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.
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
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.