Tested on 2007 at work. This introduces another variable lineDelimiter. (There were more of those replacements than I thought.)
Function EventsForDay(dateSought As Double, dataRange As Range, ParamArray columnsReturned() As Variant) As String
    Dim HeadersArray As Variant
    Dim halfDayEvents As String, fullDayEvents As String
    Dim oneEventString As String
    Dim lineDelimiter As String, eventDelimiter As String
    Dim rangeToSearch As Range
    Dim i As Long, oneCell As Range, testLen As Long
    Dim resultstr As String
    
    lineDelimiter = vbLf: eventDelimiter = vbLf
    If Application.OperatingSystem Like "*Mac*" Then
        lineDelimiter = Application.Substitute(lineDelimiter, vbLf, vbCr)
        eventDelimiter = Application.Substitute(eventDelimiter, vbLf, vbCr)
    End If
    On Error GoTo Halt
    With dataRange.Rows(1)
        With .Cells(1, Application.Match(dateSought, .Cells, 0)).EntireColumn
            Set rangeToSearch = Application.Intersect(dataRange, .Cells)
        End With
    End With
    Set rangeToSearch = Application.Intersect(rangeToSearch, rangeToSearch.Offset(1, 0))
    On Error GoTo 0
    
    HeadersArray = columnsReturned
    For i = LBound(columnsReturned) To UBound(columnsReturned)
        If columnsReturned(i) = "time" Then
            HeadersArray(i) = "Time: "
        Else
            HeadersArray(i) = CStr(dataRange.Cells(1, columnsReturned(i)).Value) & ": "
        End If
    Next i
    
    For Each oneCell In rangeToSearch
        With oneCell
            If .Value <> vbNullString Then
            Rem if there is an event, make string describing it
            oneEventString = vbNullString
            For i = LBound(columnsReturned) To UBound(columnsReturned)
                If HeadersArray(i) = "Time: " Then
                    oneEventString = oneEventString & _
                                                    HeadersArray(i)
                                                    
                    Select Case LCase(CStr(.Value))
                        Case "am"
                            oneEventString = oneEventString & _
                                                    "8:30 - 12:00" _
                                                    & lineDelimiter
                        Case "pm"
                            oneEventString = oneEventString & _
                                                    "13:30 - 17:00" _
                                                    & lineDelimiter
                        Case Else
                            oneEventString = oneEventString & _
                                                    "8:30 - 17:00" _
                                                    & lineDelimiter
                    End Select
                Else
                    With .EntireRow
                        oneEventString = oneEventString & _
                                                    HeadersArray(i) & _
                                                    CStr(Application.Intersect(.Cells, dataRange.Columns(columnsReturned(i))).Value) _
                                                    & lineDelimiter
                                                   
                    End With
                End If
            Next i
                If oneEventString <> vbNullString Then
                    Select Case CStr(.Value)
                        Case "AM"
                            halfDayEvents = eventDelimiter & oneEventString & halfDayEvents
                        Case "PM"
                            halfDayEvents = halfDayEvents & eventDelimiter & oneEventString
                        Case Else
                            fullDayEvents = eventDelimiter & oneEventString & fullDayEvents
                    End Select
                End If
            End If
        End With
    Next oneCell
    fullDayEvents = Mid(fullDayEvents, Len(eventDelimiter) + 1)
    
    halfDayEvents = Mid(halfDayEvents, Len(eventDelimiter) + 1)
    halfDayEvents = fullDayEvents & eventDelimiter & halfDayEvents
    
    If Left(halfDayEvents, Len(eventDelimiter)) = eventDelimiter Then
        halfDayEvents = Mid(halfDayEvents, Len(eventDelimiter) + 1)
    End If
    EventsForDay = halfDayEvents
Exit Function
Halt:
If Err Then EventsForDay = vbNullString
On Error GoTo 0
End Function