As you are new to VBA, may I suggest adding Option Explicit to the module as that will force you to declare your variables and then you won't so readily get the variable names mixed up - or reinvented as in your example.

The outlook code would be better as shown below - I'll leave the Excel stuff to you given that we don't know what is on the worksheet. I would also suggest checking what you have in B4 with regard to the mail received time as they need to match. You may also have a problem reading the mail body into a cell. May I suggest you test with a folder that contains few items.

Sub GetMailContent()

Dim olApp As Object
Dim olNS As Object
Dim olFldr As Object
Dim olItems As Object
Dim olMail As Object


Dim i As Integer


    On Error Resume Next
    Set olApp = GetObject(, "Outlook.Application")
    If Err Then
        Set olApp = CreateObject("Outlook.Application")
    End If
    On Error GoTo 0




    Set olNS = olApp.GetNamespace("MAPI")
    Set olFldr = olNS.Pickfolder
    If olFldr = "Nothing" Then Exit Sub
    Set olItems = olFldr.Items




    For i = 1 To olItems.Count
        Set olMail = olItems(i)
        If TypeName(olMail) = "MailItem" Then
Debug.Print olMail.ReceivedTime


            If olMail.ReceivedTime >= Range("B4").value Then
                Range("Email_Subject").Offset(1, 0).value = olMail.Subject
                Range("Email_Date").Offset(1, 0).value = olMail.ReceivedTime
                Range("Email_Sender").Offset(1, 0).value = olMail.SenderName
                'Range("Email_Body").Offset(1, 0).value = olMail.body
            End If
        End If
    Next i


    Range("A:D").EntireColumn.AutoFit


    Set olFldr = Nothing
    Set olApp = Nothing
    Set olMail = Nothing
    Set olNS = Nothing
    Set olItems = Nothing
End Sub