Button macro to move/delete active row

K

KevHardy

I’m trying to learn from previous mistakes, which mainly seem to be around
not planning well enough ahead and designing code on the fly! So I’m trying
to be pro-active ïŠ

Anyway, I’m planning a workbook with three sheets: New, Active and Archive.
The sheets are basically the same with a row of headers at the top with work
details entered in rows beneath.

What I would like to do is have two buttons in the last row of the header
labelled ‘Active’ and ‘Archive’ – having the buttons in the header so that I
don’t have to have a button in each row.

Then have a macro that can identify the active row and copy the entire.row
from ‘New’ to the first empty row in either ‘Active’ or ‘Archive’ depending
on which button is clicked. And then delete the old row from ‘New’ of course.

I have attempted to do this myself using bits of code from other solutions
you have been kind enough to give me here on the forum, but my knowledge of
vba isn’t good enough to be able to unpick them (yet). But in the few weeks
that I’ve been using vba I have learnt so much with your help!

Any help would be much appreciated.
 
M

Mike H

Hi,

The code for both buttons would be the same apart from the destination sheet
name and I have included both in the code below (one commented out).

Put the buttions on your sheet and assin the code below to each

Private Sub CommandButton1_Click()
If Selection.Rows.Count > 1 Then Exit Sub
Set sht = Sheets("Active")
'or
'Set sht = Sheets("Archive")
lastrow = sht.Cells(Cells.Rows.Count, "A").End(xlUp).Row
ActiveCell.EntireRow.Copy _
Destination:=sht.Range("A" & lastrow + 1)
ActiveCell.EntireRow.Delete
End Sub
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.
 
P

Per Jessen

Hi

I think it is something like this you want:

Sub CopyActive()
Dim DestCell As Range
Set DestCell = Worhskeets("Active").Range("A1").End(xlDown).Offset(1, 0)
ActiveCell.EntireRow.Copy Destination:=DestCell
ActiveCell.EntireRow.Delete Shift:=xlShiftUp
End Sub

Regards,
Per
 
K

KevHardy

Thanks Mike. Nice bit of code!

Mike H said:
Hi,

The code for both buttons would be the same apart from the destination sheet
name and I have included both in the code below (one commented out).

Put the buttions on your sheet and assin the code below to each

Private Sub CommandButton1_Click()
If Selection.Rows.Count > 1 Then Exit Sub
Set sht = Sheets("Active")
'or
'Set sht = Sheets("Archive")
lastrow = sht.Cells(Cells.Rows.Count, "A").End(xlUp).Row
ActiveCell.EntireRow.Copy _
Destination:=sht.Range("A" & lastrow + 1)
ActiveCell.EntireRow.Delete
End Sub
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.
 
M

Mike H

Glad I could help and thanks for the feedback
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.
 

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