Saltar al contenido

Mostrar años (desde-hasta) con dos combobox


Enigma25

Recommended Posts

publicado

Buenas tardes

Estimados todos

La presente es para solicitar su apoyo ya que tengi una duda que no se comoresoverla. En estos dias una persona del foro me solicitó que le hiciera una macro para hacer un resumen mensual de ventas (Salidas) para sus resportes y demas. Este lo haria, usando el Archivo de ConTrol de Stock.2.0. Sin embargo no se como volcar la informacion de dos combobox para que estos vayan a la hoja2 en donde se mostrara los años, es decir; 2000,2001,2002,2003 etc

La intencion es que bien por un bucle for o una seleccion, se pegue en la hoja los años para que asi pueda realizar la peracion de suma por los años.

El archivo que les adjunto tiene mas o menos lo que necesito hacer pero hay un problema, que si lo hago con lo que ya tiene, este no mostrarà nada ya que si el bucle parte del combobox1 hasta el combobo2, este tendrà demasiada informacion que no podrà mostrar.

Es por ello que busco otra solucion mas acorde.

Espero puedan entenderme y si necesitan mas informacion con gusto se las harè llegar.

Mis respetos.

Ayuda con Mostrar Años.zip

publicado

Hola Enigma25, la verdad no te acabo de entender muy bien lo que quieres es que en la hoja se muestren el rango del combobox1 hasta la del combobox2, osea si:

combobox1=1997

combobox2= 2000

Se mostrara en la hoja los años 1997,1998,1998,1999,2000 es así o no agarro la idea???. Si es así con este código tal vez:

Private Sub CommandButton1_Click()
o = 6
For I = ComboBox1 To ComboBox2
Cells(o, 1) = I
o = o + 1
Next
End Sub[/CODE]

Salu2

publicado

Hola Riddle

En verdad Mil gracias por responder.

Mi inquietud se basa en volcar los años en una hoja de manera que se muestre continuamente, es decir; desde-hasta.

Ejemplo:

1995

1996

1997

1998

Etc

De manera que pueda sumar esos años con un bucle Do While desde la hoja Registro a la hoja en cuestión.

He tratado de hacerlo pero si lo hago de la manera combobox1 to combobox2, este mostrará seguidamente una gran cantidad de números. Por ejemplo si le coloco 1995(combobox1) hasta 2013(combobox2) este mostraría 1996,1997,1998,1999 y asi sucesivamente hasta llegar al 2013, por tanto seria mucha información.

La cuestión es que lo muestre entre años como el ejemplo que puse.

En verdad seria una gran ayuda para también asi ayudar a una persona que me lo pidió en este foro.

Mis respetos hermano!

publicado

Pero, pero...... jejeje acabo de probar tu solución y es la correcta e ideal.

Asi tal cual era como lo esperaba mi hermano.

No había pensado en ir recorriendo la Variable o

o=o+1

Es la ideal mi.

Esta es una de los temas solucionados en tiempo Record!!! Mil gracias Hermano.

Mis respetos.

publicado

Jaja Enigma25, me alegra haber solucionado tu duda, la verdad ya me estaba haciendo "bola" con tu penúltima respuesta ya que me decía a mi mismo "pero eso es exactamente lo que hace mi código!!" jeje

Bueno en fin un saludo mi amigo y suerte con tu proyecto.

publicado

jejeje Si Amigo. Es solo que como yo lo hacia, no era el correcto y no había considerado una variable con la cual ir recorriéndola.

Pero con tu solución, ahora puedo continuar con lo demás. De hecho para mañana la estaré aportando para que la puedas ver y me des tus impresiones.

Mis respetos por tu gran labor y paciencia.

Doy como tema solucionado.

publicado

Hola Riddle

Que alivio que el tema no está cerrado aun porque se me presenta una duda en base a la anterior.

Claro está si los señores administradores lo permiten, de lo contrario, haga caso omiso.

De acuerdo al código que me suministro que es excelente y ya funciona en el archivo, tenia una duda respecto al como se haría este tipo de consulta en base a un rango de fechas sin necesidad de que se muestre la fechas en la hoja.

Supongo que un bucle que recorra la fechas entre inicial y final y si la hoja en donde se encuentra la información coincide, pues que se sume.

He tratado sin logro alguno para solucionar esta duda que quizás usted la vea mejor pero esot bloqueado jejeje.

No tengo como ponerle el archivo para especificar lo ya dicho pero espero poder hacerlo pronto para mayor detalle.

publicado

Hola Riddle

En verdad mil disculpas por reintentar tratar el tema y mucho mas molestarte. Sin embargo ya creo que di con el código para tal fin. Este se usa para consultar por rango de fechas que se muestran en los dos combobox.

Este funciona con un nuevo libro de Excel que cree el cual tienes dos hojas. La hoja dos tiene 6 columnas: Control, Movimiento, fecha, Código, Unidades, Monto.

Las llené con datos ficticios, solo sin mas macros ni formularios para llenar.

Desafortunadamente no puedo adjuntar el archivo por esta computadora pero si me lo permite, lo doy como código.

Debe crear un formulario con dos combobox y un botón de comando. Luego pegue lo siguiente.

Codigo de ejemplo:

Public FechaI As Date
Public FechaF As Date
Public I As Integer
Public Lin As Long
Private Sub CommandButton1_Click()
FechaI = CDate(ComboBox1)
FechaF = CDate(ComboBox2)

With Hoja1
.Cells.Clear
.Cells(5, 1) = "Codigo"
.Cells(5, 2) = "Unidades"
.Cells(5, 3) = "Montos"
.Cells(6, 1) = "a"
.Cells(7, 1) = "b"
.Cells(8, 1) = "c"
End With

'Busca Los Datos y Coincidencias de la Base de Datos de Productos Cotengandola con la Base de Registros de Operaciones
Lin = 6
Do While Hoja1.Cells(Lin, 1) <> ""
Base = 2
Do While Hoja2.Cells(Base, 1) <> ""
If Hoja1.Cells(Lin, 1) = Hoja2.Cells(Base, 4) And _
Mid(Hoja2.Cells(Base, 3), 7, 4) >= FechaI And _
Mid(Hoja2.Cells(Base, 3), 7, 4) <= FechaF Then
Hoja1.Cells(Lin, 3) = Hoja1.Cells(Lin, 2) + Hoja2.Cells(Base, 5)
Hoja1.Cells(Lin, 3) = Hoja1.Cells(Lin, 3) + Hoja2.Cells(Base, 6)
End If
Base = Base + 1
Loop
Lin = Lin + 1
Loop

End Sub
Private Sub UserForm_Initialize()
For I = 1995 To 2050
ComboBox1.AddItem I
ComboBox2.AddItem I
Next I
End Sub
[/CODE]

Espero lo pueda ver con claridad.

Mis respetos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.