 <p>You can use Application.Caller to determine which button was clicked, then just name your buttons 1,2,3,4,5 ect.. with the name of the button being the row that it is on. Then set a variable = to Application.Caller to get the row number and then you can tell excel to copy whatever rows you want based on that</p> <pre><code>rownum = Application.Caller Range("A" &amp; rownum + 5).Copy </code></pre> <p>This will say tot copy 5 rows down from whichever row was clicked assuming you name your buttons with just row numbers.</p> <p>When you filter rows the entire rows get hidden, including any buttons that are on them.</p>