Macro que se ejecute en registros con fecha en día hábil

Hola, buenas tardes, pues bien ojalá puedan ayudarme con este problemilla:
Estoy trabajando con una macro, la cual funciona de maravilla pero necesito que se ejecute únicamente en aquellos registros (de un libro de hojas) cuya fecha sea día hábil (lunes-viernes). Para ello cada registro tiene su fecha en la columna "A", ya estuve trabajando con la función weekday (letras negritas, que recién le agregué a la macro), me parece la estoy implementando mal pues me manda error, ojalá me puedan aconsejar el como puedo corregirla o alguna sugerencia, de antemano gracias por su tiempo. Anexo la macro:

Sub Directivos()
Set h1 = Sheets("List")
For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
For Each h In Sheets
Select Case h.Name
'hojas que no se van a evaluar
Case "MT2", "List", "Sheet3"
Case Else
Set r = h.Columns("E")
Set b = r.Find(h1.Cells(i, "A"), lookat:=xlPart)
'If Weekday(h.Cells(b.Row, "A")) <> vbSaturday Or Weekday(h.Cells(b.Row, "A")) <> vbSunday Then
If Not b Is Nothing Then
ncell = b.Address
Do
If h.Cells(b.Row, "F") <> 1 Then
h.Rows(b.Row).Interior.ColorIndex = 25
End If
Set b = r.FindNext(b)
Loop While Not b Is Nothing And b.Address <> ncell
End If
'End If
End Select
Next
Next
End Sub

1 Respuesta

Respuesta
1

La instrucción está bien. El problema puede ser que no esté encontrando el dato, entonces el objeto b está vacío.

Pon la instrucción después de esto, así:

If Not b Is Nothing Then

If Weekday(h.Cells(b.Row, "A")) <> vbSaturday Or Weekday(h.Cells(b.Row, "A")) <> vbSunday Then

Saludos

Gracias por la rápida respuesta! He reubicado la instrucción de ésta y algunas más pues aunque no me arroja error, simplemente no respeta la condición, sigue ejecutando la macro en los registros de días no hábiles :/, que podría ser?

Tienes que poner And en lugar de OR:

Weekday(h. Cells(b. Row, "A")) <> vbSaturday And Weekday(h. Cells(b. Row, "A")) <> vbSunday Then

Hola, buenos días, he seguido intentándole de ésta forma,ahora poniéndole el And simplemente no hace nada :(  (ni lo que normalmente hacía la macro sin lo agregado recientemente) y de otras formas y nada. Te muestro un ejemplo sobre el archivo y la macro con la cual estoy trabajando, ojalá puedas hecharme una mano!! De antemano, muchas gracias!.

https://www.dropbox.com/s/vru4ezj70xmegax/Prueba.xlsm

Perdona que no haya revisado la macro completa, solamente probé que la instrucción de las fechas sea verdadera. Esta sería la macro, había que cambiar el orden de las preguntas.

Sub Mtdos()
'Por.DAM
Set h1 = Sheets("MT2")
For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
    For Each h In Sheets
        Select Case h.Name
        Case "MT2", "Sheet2"
        Case Else
            Set r = h.Columns("E")
            Set b = r.Find(h1.Cells(i, "A"), lookat:=xlPart)
            If Not b Is Nothing Then
                ncell = b.Address
                Do
                    If h.Cells(b.Row, "F") <> 2 Then
                        If Weekday(h.Cells(b.Row, "A")) <> vbSaturday And _
                           Weekday(h.Cells(b.Row, "A")) <> vbSunday Then
                            h.Rows(b.Row).Interior.ColorIndex = 33
                        End If
                    End If
                    Set b = r.FindNext(b)
                Loop While Not b Is Nothing And b.Address <> ncell
            End If
        End Select
    Next
Next
End Sub

Saludos. Dante Amor

Muchas gracias por ayudar a una novata en esto de vba! poco a poco le empiezo a saber a vba espero poder ser un día como usted Experto DAM, mi admiración y respetos! Que tenga un excelente día :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas