First off, no error will be surfaced because you are using
On Error Resume Next
If an error occurs, that statement tells the system to ignore the error and try to continue running the routine with the next line of code. If you want to see any error that is coming up, you need to comment out that statement.
Second, when you call SendEmail from Req_FieldChange, the context of the requirement is lost. Within the SendMail routine you created, the context of Req_Fields is unknown. There is no default knowledge within that routine of the Requirement currently in focus. You need to send the Requirement ID to SendMail and have it retrieve the requirement information.
Third, within SendMail your call to SendReq does not include parameter input values that match the parameters you actually specified in the SendReq subroutine.
What I would do to ensure I had working code, is first incorporate the code directly into the Req_FieldChange subroutine. Once I'm sure the code is working, then I would work on extracting it from Req_FieldChange and putting it into separates subroutines. That's just my own methodology.
If you want the email sent regardless of what field changes, then you would remove the If/Then statement in the Req_FieldChange routine. However, then an email would be sent as EACH FIELD IS CHANGED. If you want to send only one email after all the changes are made, then you would want to put the information into the Req_AfterPost routine. But you would also need to add code to keep track of each field that changed, if you wanted to include that info in the email.