I would like to select multiple rows of a table in PowerPoint and then
delete these rows. In the past, I have used code that deletes rows one at a
time. However, I am applying this code on many tables over 100 slides and
recursively cycling through rows one by one is very slow.
Is there a way to modify the code to perform the delete operation all at once?
With ActiveWindow.Selection.ShapeRange(1).Table
For Z = 2 To 10
.Rows(Z).Delete
Next
End With
Ideally, I was hoping that the .rows(Z) property could be modified to
include a range of rows instead of just a single row. Something like
.rows("2:10") although that doesn't seem to work.
Thanks.
Does the code rely on a selected table, as in your example? If you can
eliminate that, the table may not update itself on screen with each change.
This can often speed things up tremendously.
>
> Is there a way to modify the code to perform the delete operation all at once?
>
> With ActiveWindow.Selection.ShapeRange(1).Table
>
> For Z = 2 To 10
> ..Rows(Z).Delete
> Next
> End With
>
> Ideally, I was hoping that the .rows(Z) property could be modified to
> include a range of rows instead of just a single row. Something like
> ..rows("2:10") although that doesn't seem to work.
>
> Thanks.
>
-----------------------------------------
Steve Rindsberg, PPT MVP
PPT FAQ: www.pptfaq.com
PPTools: www.pptools.com
================================================
Any way to delete the rows at the same time? I think in Excel it is possible
but is it not in PowerPoint?
I would expect it to delete 2,4,6,8,10 etc
--
-------------------------------------------
Amazing PPT Hints, Tips and Tutorials
http://www.PPTAlchemy.co.uk
http://www.technologytrish.co.uk
email john AT technologytrish.co.uk
So does anyone know a way of deleting these rows at the same time?
Thanks.
Try storing a reference to the table in a variable then deselecting it.
Do your work on the unselected table, then reselect it if need be.
I don't know of any way to delete multiple rows at a time (though that shouldn't be
taken as proof that it's not possible! <g>)
Could you please expand on your recommendation to "storing a reference to
the table in a variable then deselecting it" and "do your work on the
unselected table, then reselect it if need be"? I'm unclear as to how that
will help me in this case.
I've isolated the row deletion portion of the macro because it is the one
piece of code that is significantly slowing it down. If anyone could identify
a way to delete rows on a table at the same time rather than cycling through
them individually, I would greatly appreciate it!
So it really doesn't rely on the current table being selected.
Try something along these lines. The logic for which row to delete is ugly and wrong for
your needs but the whole thing runs fairly quickly.
Sub DelRows()
Dim oSl As Slide
Dim oSh As Shape
Dim oTbl As Table
Dim lRow As Long
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
If oSh.HasTable Then
Set oTbl = oSh.Table
With oTbl
If .Rows.Count > 2 Then
For lRow = .Rows.Count To 1 Step -2
.Rows(lRow).Delete
Next
End If
End With
End If
Next
Next
End Sub
Actually the macro already works on unselected tables... the part that is
really slowing it down is the individual deletion of rows.
Could there be a way to delete these rows at the same time through VBA?
Since I can manually select multiple rows in a PowerPoint table, right click
on the table rows, and select "Delete Rows", I was hoping there was a way to
do this through VBA as well.
Thanks.