|re: "The macros should wait for entries in both columns A and B before firing"|
That's not how Worksheet_Change macros work. Worksheet_Change events fire whenever a change (with certain exceptions) is made to the sheet. Whether or not the code actually does anything is a different story.
For example, let's look at a simple Worksheet_Change macro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
MsgBox "You Changed Something In Column 1"
"ByVal Target As Range" means that it is going to use the cell (the "Target") as a Range.
"If Target.Column = 1 Then" means that it is going to determine if the Target was in Column 1, known in Excel as Column A
If you make a change to Column 1 (Column A), the code is going to fire and display the message because the If statement is TRUE.
If you make a change to Column 2 (Column B), the code is still going to fire but it won't display the message because the If statement is FALSE.
In other words, the code doesn't "wait" for a change to a particular column or cell or range, it fires on the change and then simply executes the lines in the code.
If you only want the code to "do something" once entries are made to both cells, then you'll need to come with some logic for the code to follow so that it reads what is in both cells and copies what you want where.
It can't "ignore" a change, it can only do, or not do, something when a change is made based on how the code is written.
So based on that, if you can come up with some logic that the code will follow each time you make a change to either Column 1 or 2, then maybe we can get it to work.
The other option is to use a "standard" (manual) macro with a button that you click after you have made the entries you want.
Click Here Before Posting Data or VBA Code ---> How To Post Data or Code.