Is there a way to programatically schedule a function call?

Is there a way to programatically schedule a function call?

I wrote a function that creates a record in a custom module that I need to trigger 30 days after a field in another custom module is set to a specific value. The issue is that I need to have it triggered every time the record is edited, not just the first time, and if I check that box in the workflow builder I get a message that says the schedule will be removed (see attached screenshot). So, is there a way to create a scheduled action from within a function, and that scheduled action call the record creating function with the requisite id? So the flow would be:

1) Workflow triggers, calls scheduler passing in the id.
2) Scheduler function schedules an action to call the record creating function with the id passed in.
3) Scheduled action triggers 30 days later, calling the record creating function with the correct id, record is created.

Thanks.

-Michael