The following two VBA modules work together.
In the first on 'Sub ChangeToE_Expired()' If ws.Cells(row, col).Value <> "" And ws.Cells(1, col).Value < DateToday Then
ws.Cells(row, col).Value = "e"
But in the second one 'Sub ClearExpiredLeaves()' this part of the code is not working:
If eDelete And Not encounteredNonEValue Then
                    ' Clear all 'e' values seen before this empty cell
                    For colDelete = 2 To col - 1
                        If ws.Cells(row, colDelete).Value = "e" Then
                            ws.Cells(row, colDelete).ClearContents
                        End If
The second one module 'Sub ClearExpiredLeaves()' should do the following:
' Loop through each row from 2 to 8
' Loop through each cell in the specified column range
' If we find 'e', we mark it for potential deletion
' But If we find any value that is not 'e' (and not empty)
' Do not delete any previously found 'e's
' If we encounter an empty cell after the 'e's
' Clear all 'e' values seen before this empty cell
' Exit this column loop because we've reached an empty cell


Sub ChangeToE_Expired()

  Dim ws As Worksheet
  Dim foundA As Boolean
  Dim row As Long
  Dim col As Long
  Dim DateToday As Date
  Set ws = ThisWorkbook.Worksheets("Leave")
  ws.Unprotect Password:="edit"
  Application.EnableEvents = False
  DateToday = Date
  ' Loop through rows from 2 to 8
  For row = 2 To 8
    foundA = False  ' Flag to track if a non-empty cell is found
    ' Loop through columns from B to CP
    For col = 2 To 94
      If Not IsEmpty(ws.Cells(row, col).Value) And VarType(ws.Cells(row, col).Value) = vbString Then
        ' Check if cell is not empty and before today's date, then update to 'e'
        If ws.Cells(row, col).Value <> "" And ws.Cells(1, col).Value < DateToday Then
          ws.Cells(row, col).Value = "e"
          foundA = True  ' Set flag if a non-empty cell was found
        End If
      End If
    Next col
  Next row
Call ClearExpiredLeaves
End Sub

Sub ClearExpiredLeaves()

    Dim ws As Worksheet
    Dim row As Long, col As Long
    Dim colDelete As Long ' Declare the colDelete variable
    Dim eDelete As Boolean
    Dim encounteredNonEValue As Boolean

    Set ws = ThisWorkbook.Worksheets("Leave")

    ' Loop through each row from 2 to 8
    For row = 2 To 8
        eDelete = False ' Reset the deletion flag for 'e'
        encounteredNonEValue = False ' Reset the flag for non-'e' values

        ' Loop through each cell in the specified column range
        For col = 2 To 94
            If ws.Cells(row, col).Value = "e" Then
                ' If we find 'e', we mark it for potential deletion
                eDelete = True
            ElseIf Not IsEmpty(ws.Cells(row, col).Value) Then
                ' If we find any value that is not 'e' (and not empty)
                encounteredNonEValue = True
                ' Do not delete any previously found 'e's
            ElseIf IsEmpty(ws.Cells(row, col).Value) Then
                ' If we encounter an empty cell
                If eDelete And Not encounteredNonEValue Then
                    ' Clear all 'e' values seen before this empty cell
                    For colDelete = 2 To col - 1
                        If ws.Cells(row, colDelete).Value = "e" Then
                            ws.Cells(row, colDelete).ClearContents
                        End If
                    Next colDelete
                End If
                
                ' Exit this column loop because we've reached an empty cell
                Exit For
            End If
        Next col
    Next row

    Call ChangeToA_Current
End Sub