UserForm_Initialize is Private. Instead, use
Application.OnTime TimeValue("08:00:00"), "StandardModuleName.StartUserForm"
Standard Module Code. Replace "StandardModuleName" above with the name of the module you put this code in. Replace "UserForm1" below with the actual Name of the UserForm
Public Sub StartUserForm()
If Now < TimeValue("12:00:00") Then
Application.OnTime TimeValue("12:00:00"), "StandardModuleName.StartUserForm"
ElseIf Now < TimeValue("16:00:00") Then
Application.OnTime TimeValue("16:00:00"), "StandardModuleName.StartUserForm"
End If
UserForm1.Show
End Sub