There are a few ways to handle this.
You can leave the report with StartDate and EndDate Parameters.
Edit the report and give the Parameters Default Values.
StartDate will be =Datetime.Today.AddDays(-Day(Datetime.Today.AddDays(-1)))
Will be the first of the Current Month, But if it is the first, it will be first of Prev Month.
and EndDate will be Datetime.Today. And Make sure the report is using these days correctly.
and when you schedule the subscription, just have it use the Default value.
Or you can add a drop down with values like "This Month","Last Month", "This Year". And your code can interpret these values to generate the dates.