Code in a macro to branch to another macro?

K

Kevryl

I wonder if someone can help me with a little code for inclusion in a macro?
It needs to do the following:

“If cell in column D on this row = "Sunday", perform Macro “Sundayâ€,
otherwise execute macro “Weekdayâ€â€

Background info:

I run an accounting system on a series of worksheets. The Cash Journal
dynamically applies the week of the year and day of the week (based on the
first date in the financial year) and conditionally formats rows accordingly
to highlight weekends. Macros post the daily cashup sheet to the Cash
Journal and General journal. I am combining them to operate both from the
Cashup sheet and I need that macro to automatically avoid posting to a row in
the Cash Journal that falls on Sunday. So it must makes a decision on the day
and branch to an alternate macro on Sunday. (Both macros will be the same,
except that “Sunday†will jump down 2 more rows (cash register inputs) than
“Weekday†before recreating a range name that acts as a cursor locator.)

Many thanks
Kevryl
 
J

JLatham

Do you have any code written at all yet? First, I'd advise on not using
"Weekday" as the name of a macro (and to a lesser degree I wouldn't use
Sunday either). Perhaps something like "ProcessSundays" and "ProcessWeedays".

But to your specific question:
Sub MakeTheDecision()
If ThisWorkbook.Worksheets("SheetName").Range("D5") = _
"Sunday" Then
ProcessSundays
Else
ProcessWeekdays
End If
End Sub

That code assumes that it is in the same module with the two referenced Subs.
 
K

Kevryl

Hi JL, thanks for such a fast response.

Yes & No - no code for the Sunday decision but the very lengthy macros to be
combined have been running smoothly every day for about 6 years.

The names: just used Saturday and Sunday for ease of explanation. I shall
take your advice on that. I'm surprised that "ProcessSundays" doesn't need to
be inside quotes or brackets.

One problem remains: "Range("D5")" in your code is absolute, and it needs to
be relative to travel down the sheet. The cursor will be in column E (at
rangename "CJreturn" at the point when it refers to the contents of Column C.
I could use the same name/delete/rename routine that I use for "CJreturn" to
advance the cursor begin point, and address the rangename, but there's
probably a tidier way. Will that work, just substituting (say) the rangename
"daycheck" for "D5" in the code you have given? I reckon it should.

Well, its 1.00am Sunday here in Tasmania and I gotta go home! I presume its
late Saturday afternoon where you are so have a great evening!

Thanks again.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top