Hola buen día, quisiera que me ayudaran sobre la siguiente duda, tengo un libro de excel con 2 hojas, las cuales una es mi base de datos, y la otra necesito que me introduzca automatizado un informe para lo cual, solo necesito dar el rango de fechas que deseo consultar y en mi caso el numero de vehículo "unidad", y en automático me de esos datos. La segunda duda es tengo un formulario, en la hoja llamada base de datos, pero necesito que en el textbox llamado fecha, ponga en automático o fijos no se como sea, las diagonales de 00/00/00 por ejemplo, o bien que me de la fecha dando clic.
Por su atención y oportuna respuesta muchas gracias.
1 Respuesta
Respuesta de ma_ramirez_r
1
1
ma_ramirez_r, Macros en Excel avanzado, apuntando a ser experto
Solo como sugerencia las preguntas hazlas de una en una, para evaluarlas correctamente, sino solo me darás una puntuación en vez de dos como en este caso. Bueno 1) Te sugiero lo siguiente validar con un botón puedes llamarlo cmdFiltrar, una vez escritos los datos para que vía macro te haga el filtro y te lo copie donde tu lo desees, En el botón colocas lo siguiente: Private Sub cmdFiltrar_Click() Call modFiltra.FiltraDatos(Worksheets("Informe Semanal").Range("Desde"), _ Worksheets("Informe Semanal").Range("hasta"), _ Worksheets("Informe Semanal").Range("Unidad")) End Sub Luego creas un modulo en donde escribes o copias lo siguiente: Option Explicit Public tipoFecha As Integer Sub FiltraDatos(Desde As Date, Hasta As Date, Unidad As Integer) Dim dDesde As String Dim dHasta As String Dim linFin As Long dDesde = ">=" & Format(Desde, "mm/dd/yyyy") dHasta = "<=" & Format(Hasta, "mm/dd/yyyy") Range("A12").Select linFin = Range("A3").SpecialCells(xlLastCell).Row Range("A12:Q" & linFin).ClearContents Worksheets("Base Gas").Select Selection.AutoFilter Field:=1, Criteria1:=dDesde, _ Operator:=xlAnd, _ Criteria2:=dHasta Selection.AutoFilter Field:=2, Criteria1:=Unidad Range("A3").Select linFin = Range("A3").SpecialCells(xlLastCell).Row Range("C4:S" & linFin).Copy Worksheets("Informe Semanal").Select Range("A12").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select End Sub y con eso tendras tus datos en donde quieras 2) En el textBox escribe lo siguiente: Private Sub txtfecha_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) tipoFecha = 3 frmFechas.Show End Sub En donde frmFechas corresponde a un formulario que tiene en su interior el objeto calendario. y un boton aceptar, en el boton aceptar escribes lo siguiente: Private Sub cmdaceptar_Click() If tipoFecha = 1 Then Worksheets("Informe Semanal").Range("Desde") = frmFechas.Calendar1.Value ElseIf tipoFecha = 2 Then Worksheets("Informe Semanal").Range("Hasta") = frmFechas.Calendar1.Value ElseIf tipoFecha = 3 Then frminsertar.txtfecha = frmFechas.Calendar1.Value Me.Hide Exit Sub End If Me.Hide If Not IsEmpty(Worksheets("Informe Semanal").Range("Desde")) And _ (Worksheets("Informe Semanal").Range("Hasta") < _ Worksheets("Informe Semanal").Range("Desde")) Then Worksheets("Informe Semanal").Range("Hasta") = "" MsgBox "La fecha «Hasta» debe ser mayor que " & _ Worksheets("Informe Semanal").Range("Desde") & Chr(13) & _ "Ingrese nuevamente la fecha.", vbCritical End If End Sub Y eso, no olvides cerrar la pregunta y evaluar la respuesta.