Group:  Microsoft Excel ยป microsoft.public.excel.programming
Thread: Run a macro only when deleing a row

Geek News

Run a macro only when deleing a row
BG Lad 12/31/2008 4:03:01 PM
Can anyone get me started on where I might put some code that runs when a row
or any cell is deleted in the worksheet?
--
B Good Lad
RE: Run a macro only when deleing a row
Gary''s Student 12/31/2008 5:16:05 PM
Put this Event macro in the worksheet code area:

Dim rowcount As Long
Private Sub Worksheet_Change(ByVal Target As Range)
If IsEmpty(rowcount) Then
Else
If ActiveSheet.UsedRange.Rows.Count = rowcount - 1 Then
MsgBox ("a row was deleted")
End If
End If
rowcount = ActiveSheet.UsedRange.Rows.Count
End Sub

It relies on detecting that the number of rows in UsedRange has been reduced
by one. Because it is worksheet code, it is very easy to install and use:

1. right-click the tab name near the bottom of the window
2. select View Code - this brings up a VBE window
3. paste the stuff in and close the VBE window

If you save the workbook, the macro will be saved with it.

To remove the macro:

1. bring up the VBE windows as above
2. clear the code out
3. close the VBE window

To learn more about macros in general, see:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

To learn more about Event Macros (worksheet code), see:

http://www.mvps.org/dmcritchie/excel/event.htm


--
Gary''s Student - gsnu200823


"BG Lad" wrote:

[Quoted Text]
> Can anyone get me started on where I might put some code that runs when a row
> or any cell is deleted in the worksheet?
> --
> B Good Lad
RE: Run a macro only when deleing a row
BG Lad 12/31/2008 6:11:01 PM
Does the 'Dim rowcount As Long' really go before the 'Private Sub ...'
statement?

--
B Good Lad


"Gary''s Student" wrote:

[Quoted Text]
> Put this Event macro in the worksheet code area:
>
> Dim rowcount As Long
> Private Sub Worksheet_Change(ByVal Target As Range)
> If IsEmpty(rowcount) Then
> Else
> If ActiveSheet.UsedRange.Rows.Count = rowcount - 1 Then
> MsgBox ("a row was deleted")
> End If
> End If
> rowcount = ActiveSheet.UsedRange.Rows.Count
> End Sub
>
> It relies on detecting that the number of rows in UsedRange has been reduced
> by one. Because it is worksheet code, it is very easy to install and use:
>
> 1. right-click the tab name near the bottom of the window
> 2. select View Code - this brings up a VBE window
> 3. paste the stuff in and close the VBE window
>
> If you save the workbook, the macro will be saved with it.
>
> To remove the macro:
>
> 1. bring up the VBE windows as above
> 2. clear the code out
> 3. close the VBE window
>
> To learn more about macros in general, see:
>
> http://www.mvps.org/dmcritchie/excel/getstarted.htm
>
> To learn more about Event Macros (worksheet code), see:
>
> http://www.mvps.org/dmcritchie/excel/event.htm
>
>
> --
> Gary''s Student - gsnu200823
>
>
> "BG Lad" wrote:
>
> > Can anyone get me started on where I might put some code that runs when a row
> > or any cell is deleted in the worksheet?
> > --
> > B Good Lad
Re: Run a macro only when deleing a row
"Rick Rothstein" <rick.newsNO.SPAM[ at ]NO.SPAMverizon.net> 12/31/2008 7:36:25 PM
You declared the 'rowcount' variable as a Long, but then you do an IsEmpty
test inside the subroutine. IsEmpty will always return False for a variable
declared as anything other than a Variant.

--
Rick (MVP - Excel)


"Gary''s Student" <GarysStudent[ at ]discussions.microsoft.com> wrote in message
news:EB1C49F5-EF41-4291-9C3F-1760A03EFCF2[ at ]microsoft.com...
[Quoted Text]
> Put this Event macro in the worksheet code area:
>
> Dim rowcount As Long
> Private Sub Worksheet_Change(ByVal Target As Range)
> If IsEmpty(rowcount) Then
> Else
> If ActiveSheet.UsedRange.Rows.Count = rowcount - 1 Then
> MsgBox ("a row was deleted")
> End If
> End If
> rowcount = ActiveSheet.UsedRange.Rows.Count
> End Sub
>
> It relies on detecting that the number of rows in UsedRange has been
> reduced
> by one. Because it is worksheet code, it is very easy to install and use:
>
> 1. right-click the tab name near the bottom of the window
> 2. select View Code - this brings up a VBE window
> 3. paste the stuff in and close the VBE window
>
> If you save the workbook, the macro will be saved with it.
>
> To remove the macro:
>
> 1. bring up the VBE windows as above
> 2. clear the code out
> 3. close the VBE window
>
> To learn more about macros in general, see:
>
> http://www.mvps.org/dmcritchie/excel/getstarted.htm
>
> To learn more about Event Macros (worksheet code), see:
>
> http://www.mvps.org/dmcritchie/excel/event.htm
>
>
> --
> Gary''s Student - gsnu200823
>
>
> "BG Lad" wrote:
>
>> Can anyone get me started on where I might put some code that runs when a
>> row
>> or any cell is deleted in the worksheet?
>> --
>> B Good Lad

Re: Run a macro only when deleing a row
"Rick Rothstein" <rick.newsNO.SPAM[ at ]NO.SPAMverizon.net> 12/31/2008 7:43:37 PM
Yes. That makes it "global" to the code module it is on and it will retain
its value after the subroutine that puts a value in it ends. If you declared
it inside the subroutine, then any values assigned to it would disappear
when the subroutine ended. Usually a variable is declared outside of a
subroutine or function in the (General)(Declarations) section of the code
window so that more than one subroutine and/or function can reference its
value. That is not how Gary''s Student is using it, though; rather, he is
using the fact that this kind of declaration preserves values while the code
windows remains active. Another way to have handled this would have been to
declare the variable as Static inside the subroutine itself... doing that
would insure no other procedures would be able to change it, but Static
variable retain their values from subroutine call to subroutine call.

Look up "Understanding Scope and Visibility" in the VB help files for more
information on this. Also look up the "Static Statement" in the VB help
files too.

--
Rick (MVP - Excel)


"BG Lad" <BGLad[ at ]discussions.microsoft.com> wrote in message
news:EE553A6A-64F3-4E19-85D3-29641CC2D408[ at ]microsoft.com...
[Quoted Text]
> Does the 'Dim rowcount As Long' really go before the 'Private Sub ...'
> statement?
>
> --
> B Good Lad
>
>
> "Gary''s Student" wrote:
>
>> Put this Event macro in the worksheet code area:
>>
>> Dim rowcount As Long
>> Private Sub Worksheet_Change(ByVal Target As Range)
>> If IsEmpty(rowcount) Then
>> Else
>> If ActiveSheet.UsedRange.Rows.Count = rowcount - 1 Then
>> MsgBox ("a row was deleted")
>> End If
>> End If
>> rowcount = ActiveSheet.UsedRange.Rows.Count
>> End Sub
>>
>> It relies on detecting that the number of rows in UsedRange has been
>> reduced
>> by one. Because it is worksheet code, it is very easy to install and
>> use:
>>
>> 1. right-click the tab name near the bottom of the window
>> 2. select View Code - this brings up a VBE window
>> 3. paste the stuff in and close the VBE window
>>
>> If you save the workbook, the macro will be saved with it.
>>
>> To remove the macro:
>>
>> 1. bring up the VBE windows as above
>> 2. clear the code out
>> 3. close the VBE window
>>
>> To learn more about macros in general, see:
>>
>> http://www.mvps.org/dmcritchie/excel/getstarted.htm
>>
>> To learn more about Event Macros (worksheet code), see:
>>
>> http://www.mvps.org/dmcritchie/excel/event.htm
>>
>>
>> --
>> Gary''s Student - gsnu200823
>>
>>
>> "BG Lad" wrote:
>>
>> > Can anyone get me started on where I might put some code that runs when
>> > a row
>> > or any cell is deleted in the worksheet?
>> > --
>> > B Good Lad

Re: Run a macro only when deleing a row
BG Lad 12/31/2008 7:57:02 PM
Right, but I was referring to the position in code of the Dim statement. If
it is to be located before the "Private Sub ... " statement then it is moved
into the "(General)" section "(Declarations)", is this correct?
--
B Good Lad

"Rick Rothstein" wrote:
[Quoted Text]
> You declared the 'rowcount' variable as a Long, but then you do an IsEmpty
> test inside the subroutine. IsEmpty will always return False for a variable
> declared as anything other than a Variant.
>
> --
> Rick (MVP - Excel)
>
>
> "Gary''s Student" <GarysStudent[ at ]discussions.microsoft.com> wrote in message
> news:EB1C49F5-EF41-4291-9C3F-1760A03EFCF2[ at ]microsoft.com...
> > Put this Event macro in the worksheet code area:
> >
> > Dim rowcount As Long
> > Private Sub Worksheet_Change(ByVal Target As Range)
> > If IsEmpty(rowcount) Then
> > Else
> > If ActiveSheet.UsedRange.Rows.Count = rowcount - 1 Then
> > MsgBox ("a row was deleted")
> > End If
> > End If
> > rowcount = ActiveSheet.UsedRange.Rows.Count
> > End Sub
> >
> > It relies on detecting that the number of rows in UsedRange has been
> > reduced
> > by one. Because it is worksheet code, it is very easy to install and use:
> >
> > 1. right-click the tab name near the bottom of the window
> > 2. select View Code - this brings up a VBE window
> > 3. paste the stuff in and close the VBE window
> >
> > If you save the workbook, the macro will be saved with it.
> >
> > To remove the macro:
> >
> > 1. bring up the VBE windows as above
> > 2. clear the code out
> > 3. close the VBE window
> >
> > To learn more about macros in general, see:
> >
> > http://www.mvps.org/dmcritchie/excel/getstarted.htm
> >
> > To learn more about Event Macros (worksheet code), see:
> >
> > http://www.mvps.org/dmcritchie/excel/event.htm
> >
> >
> > --
> > Gary''s Student - gsnu200823
> >
> >
> > "BG Lad" wrote:
> >
> >> Can anyone get me started on where I might put some code that runs when a
> >> row
> >> or any cell is deleted in the worksheet?
> >> --
> >> B Good Lad
>
>
Re: Run a macro only when deleing a row
"Rick Rothstein" <rick.newsNO.SPAM[ at ]NO.SPAMverizon.net> 12/31/2008 8:08:22 PM
See my direct response to where you asked that question the first time... my
comment in this subthread was directed to Gary''s Student who posted the
original code.

--
Rick (MVP - Excel)


"BG Lad" <BGLad[ at ]discussions.microsoft.com> wrote in message
news:59480EA5-78D8-402F-AB29-5FE8E697138D[ at ]microsoft.com...
[Quoted Text]
> Right, but I was referring to the position in code of the Dim statement.
> If
> it is to be located before the "Private Sub ... " statement then it is
> moved
> into the "(General)" section "(Declarations)", is this correct?
> --
> B Good Lad
>
> "Rick Rothstein" wrote:
>> You declared the 'rowcount' variable as a Long, but then you do an
>> IsEmpty
>> test inside the subroutine. IsEmpty will always return False for a
>> variable
>> declared as anything other than a Variant.
>>
>> --
>> Rick (MVP - Excel)
>>
>>
>> "Gary''s Student" <GarysStudent[ at ]discussions.microsoft.com> wrote in
>> message
>> news:EB1C49F5-EF41-4291-9C3F-1760A03EFCF2[ at ]microsoft.com...
>> > Put this Event macro in the worksheet code area:
>> >
>> > Dim rowcount As Long
>> > Private Sub Worksheet_Change(ByVal Target As Range)
>> > If IsEmpty(rowcount) Then
>> > Else
>> > If ActiveSheet.UsedRange.Rows.Count = rowcount - 1 Then
>> > MsgBox ("a row was deleted")
>> > End If
>> > End If
>> > rowcount = ActiveSheet.UsedRange.Rows.Count
>> > End Sub
>> >
>> > It relies on detecting that the number of rows in UsedRange has been
>> > reduced
>> > by one. Because it is worksheet code, it is very easy to install and
>> > use:
>> >
>> > 1. right-click the tab name near the bottom of the window
>> > 2. select View Code - this brings up a VBE window
>> > 3. paste the stuff in and close the VBE window
>> >
>> > If you save the workbook, the macro will be saved with it.
>> >
>> > To remove the macro:
>> >
>> > 1. bring up the VBE windows as above
>> > 2. clear the code out
>> > 3. close the VBE window
>> >
>> > To learn more about macros in general, see:
>> >
>> > http://www.mvps.org/dmcritchie/excel/getstarted.htm
>> >
>> > To learn more about Event Macros (worksheet code), see:
>> >
>> > http://www.mvps.org/dmcritchie/excel/event.htm
>> >
>> >
>> > --
>> > Gary''s Student - gsnu200823
>> >
>> >
>> > "BG Lad" wrote:
>> >
>> >> Can anyone get me started on where I might put some code that runs
>> >> when a
>> >> row
>> >> or any cell is deleted in the worksheet?
>> >> --
>> >> B Good Lad
>>
>>

Re: Run a macro only when deleing a row
BG Lad 12/31/2008 8:27:01 PM
Bingo, everything is on it way nice job and thanks for the effort!
--
B Good Lad


"BG Lad" wrote:

[Quoted Text]
> Right, but I was referring to the position in code of the Dim statement. If
> it is to be located before the "Private Sub ... " statement then it is moved
> into the "(General)" section "(Declarations)", is this correct?
> --
> B Good Lad
>
> "Rick Rothstein" wrote:
> > You declared the 'rowcount' variable as a Long, but then you do an IsEmpty
> > test inside the subroutine. IsEmpty will always return False for a variable
> > declared as anything other than a Variant.
> >
> > --
> > Rick (MVP - Excel)
> >
> >
> > "Gary''s Student" <GarysStudent[ at ]discussions.microsoft.com> wrote in message
> > news:EB1C49F5-EF41-4291-9C3F-1760A03EFCF2[ at ]microsoft.com...
> > > Put this Event macro in the worksheet code area:
> > >
> > > Dim rowcount As Long
> > > Private Sub Worksheet_Change(ByVal Target As Range)
> > > If IsEmpty(rowcount) Then
> > > Else
> > > If ActiveSheet.UsedRange.Rows.Count = rowcount - 1 Then
> > > MsgBox ("a row was deleted")
> > > End If
> > > End If
> > > rowcount = ActiveSheet.UsedRange.Rows.Count
> > > End Sub
> > >
> > > It relies on detecting that the number of rows in UsedRange has been
> > > reduced
> > > by one. Because it is worksheet code, it is very easy to install and use:
> > >
> > > 1. right-click the tab name near the bottom of the window
> > > 2. select View Code - this brings up a VBE window
> > > 3. paste the stuff in and close the VBE window
> > >
> > > If you save the workbook, the macro will be saved with it.
> > >
> > > To remove the macro:
> > >
> > > 1. bring up the VBE windows as above
> > > 2. clear the code out
> > > 3. close the VBE window
> > >
> > > To learn more about macros in general, see:
> > >
> > > http://www.mvps.org/dmcritchie/excel/getstarted.htm
> > >
> > > To learn more about Event Macros (worksheet code), see:
> > >
> > > http://www.mvps.org/dmcritchie/excel/event.htm
> > >
> > >
> > > --
> > > Gary''s Student - gsnu200823
> > >
> > >
> > > "BG Lad" wrote:
> > >
> > >> Can anyone get me started on where I might put some code that runs when a
> > >> row
> > >> or any cell is deleted in the worksheet?
> > >> --
> > >> B Good Lad
> >
> >

Home | Search | Terms | Imprint Contact
Newsgroups Reader - provided by WiredBox.Net