Re: Code does not 'run' when assigned to a button
Starting at the simplest... The Error 6 is a result of an invalid assignment to a particular data type. It is such a fundamental concept in any programming language that you need to understand it yourself to avoid it in future. You could start by reading this (That page is from an Access book but the concept is the same for Excel - it's all VBA).
The remaining issues are not program errors as such but logic errors - it is not doing as you expect. The only pointer I can give here is that there are some references to ranges that are not qualified with a sheet name - it is possible the incorrect sheet is being updated.
Without a copy of the workbook I can't be any more exact, a quick read of the code doesn't show any glaring issues, so this is one for you to try debugging.
Debugging is an essential part of any development, you can step through the code line by line testing the values of variables before a line executes to confirm it is working with the right values, you can change the value stored in a variable or even change which like will execute next (within limits). For a good basic primer on debugging, see this page.