Marcar celdas de fechas que están entre una y otra fecha

Para Dante

Hola

Hace una días me proporcionaste una macro para buscar entre fechas. Sera que es posible que las fechas que están entre (ejem. 01/10/2014 a 24/10/2014) salgan marcadas con un color diferente (verde por ejemplo), la idea es que al seleccionar un rango de fechas, las que se encuentren entre ese rango se diferencien con un color.

1 respuesta

Respuesta
1

Te anexo la macro con la instrucción para pintar de verde la celda

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Dim fec1 As Date, fec2 As Date
    Set h1 = Sheets("datos")
    Set h2 = Sheets("datosm")
    '
    h2.Cells.Clear
    h1.Rows(1).Copy h2.Rows(1)
    '
    fec1 = TextBox2
    fec2 = TextBox3
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        For j = Columns("G").Column To Columns("W").Column Step 2
            If Cells(i, j) >= fec1 And Cells(i, j) <= fec2 Then
                '
                'pinta la celda de verde
                Cells(i, j).Interior.ColorIndex = 4
                '
                u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
                Rows(i).Copy h2.Rows(u)
            End If
        Next
    Next
    '
    bordes
    '
    'mostramos el resultado del filtro avanzado en el textbox
    ListBox1.RowSource = Empty
    ListBox1.RowSource = h2.Name & "!A2:X" & h2.Range("A" & Rows.Count).End(xlUp).Row
End Sub

Saludos.Dante Amor

Si es lo que necesitas.

gracias, eso es

saludos

Buen día

Molestando con lo anterior

Marcar celdas de fechas que están entre una y otra fecha

Quizás me apresure a decir que todo estaba bien pero luego de hacer pruebas salta un inconveniente.

Le aplique el código para buscar por semana, y cuando hice el primer filtro todo bien, pero de la segunda prueba en adelante me salen marcadas los filtros anteriores que hice.

Ejemplo

El primer filtro lo hice buscando la semana 12

El segundo buscando la semana 21

Y el tercero buscan la semana 30

Cuando hice el tercero me salieron marcados los dos pirmeros a pesar de que tiene código para limpiar.

Se supone que cada vez que hago un filtro y luego hago otro se debe limpiar para hacer uno nuevo, pero a pesar de eso siempre me sale lo que hice en el filtro anterior.

Igual pasa cuando filtro por fechas.

Disculpa la molestia.

Cuáles quieres pintar las de la hoja1 o las de la hoja2

En el archivo que te envíe la hoja1 es "datos" y la hoja2 es "datosm"

Entonces el resultado del filtro debe mostrarse en la hoja2, ahí es donde deben aparecer pintadas. por favor

Hola

Te envíe un correo con detalles

Te anexo la macro para el botón "filtrar"

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Dim fec1 As Date, fec2 As Date
    Set h1 = Sheets("datos")
    Set h2 = Sheets("datosm")
    '
    h2.Cells.Clear
    h1.Rows(1).Copy h2.Rows(1)
    '
    fec1 = TextBox2
    fec2 = TextBox3
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        For j = Columns("G").Column To Columns("W").Column Step 2
            If Cells(i, j) >= fec1 And Cells(i, j) <= fec2 Then
                u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
                Rows(i).Copy h2.Rows(u)
                h2.Cells(u, j).Interior.ColorIndex = 4
            End If
        Next
    Next
    '
    With Sheets("datosm").Cells
        .Borders(xlEdgeLeft).LineStyle = xlNone
        .Borders(xlEdgeTop).LineStyle = xlNone
        .Borders(xlEdgeBottom).LineStyle = xlNone
        .Borders(xlEdgeRight).LineStyle = xlNone
        .Borders(xlInsideVertical).LineStyle = xlNone
        .Borders(xlInsideHorizontal).LineStyle = xlNone
    End With
    With Sheets("datosm").UsedRange
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With
    '
    'mostramos el resultado del filtro avanzado en el textbox
    ListBox1.RowSource = Empty
    ListBox1.RowSource = h2.Name & "!A2:X400"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas