Beginner Seeking Help

Viking1221

New Member
Joined
May 25, 2017
Messages
31
Hello,

I have a macro that use the autofilter function to find blanks and then deletes the rows. However, I am struggling with how to write a macro that will find the last column in row 10 and filter on zero and delete all 0's. Then after it executes this code, I want 'that' entire column deleted. Any ideas?

This is the code I have, but is specifically looks at Column C:

Sub DeleteRowsC()

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Journals")
ws.Activate
On Error Resume Next
ws.ShowAllData
On Error GoTo 0

ws.Range("A10:BZ10000").AutoFilter Field:=3, Criteria1:=""

Application.DisplayAlerts = False
ws.Range("A10:BZ10000").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True

On Error Resume Next
ws.ShowAllData
On Error GoTo 0

End Sub
 

Some videos you may like

Excel Facts

Do you hate GETPIVOTDATA?
Prevent GETPIVOTDATA. Select inside a PivotTable. In the Analyze tab of the ribbon, open the dropown next to Options and turn it off

JLGWhiz

Well-known Member
Joined
Feb 7, 2012
Messages
12,979
Office Version
  1. 2013
Platform
  1. Windows
I am probably misreading your post, but if you get the last column, delete the zeros and then delete the column, why not just delete the column to begin with?
Code:
Sub t()
With ActiveSheet
    . Columns(.Cells(10, Columns.Count).End(xlToLeft).Column).Delete xlShiftLeft
End With
End Sub
 
Last edited:

Viking1221

New Member
Joined
May 25, 2017
Messages
31
Are you wanting to DELETE Column of Row 10 Only?

Hello,

What I am doing in my last row is adding up columns D:End to identify rows with all zero's. I then want to filter on 0 and delete all rows with 0 in this column. Then I want to delete that column as it is not in my original dataset.
 

higrm

New Member
Joined
Nov 5, 2014
Messages
47

ADVERTISEMENT

Wouldn't just changing the 3 to a 10 work?

ws.Range("A10:BZ10000").AutoFilter Field:=3, Criteria1:=""

ws.Range("A10:BZ10000").AutoFilter Field:=10, Criteria1:=0

Then delete your rows and then do Range("j:j").delete

I think that will give you what you've asked for.
 
Last edited:

higrm

New Member
Joined
Nov 5, 2014
Messages
47
Oops, misread the row 10 as column 10. Ok, find the last cell in row 10 by going all the way to the right of column then and then back to the first filled cell. Once you have that cell, use it's column reference to adjust your autofilter line as above.

Code:
[FONT=Courier][COLOR=#00007f]Sub[/COLOR] xxx()

    [COLOR=#00007f]Dim[/COLOR] lCol [COLOR=#00007f]As[/COLOR] [COLOR=#00007f]Long[/COLOR]
    lCol = Cells(10, Columns.Count).End(xlToLeft).Column
    [/FONT][FONT=Courier]Range("A10:BZ10000").AutoFilter Field:=lCol, Criteria1:=0   
    Range("A10:BZ10000").SpecialCells(xlCellTypeVisible).Delete
    Range(Cells(1,10),cells(1,10)).column.delete
[COLOR=#00007f]End[/COLOR] [COLOR=#00007f]Sub[/COLOR][/FONT]

I'm guessing on the last line whether that will get you the column ok.
 
Last edited:

higrm

New Member
Joined
Nov 5, 2014
Messages
47

ADVERTISEMENT

correct last line:
Code:
[FONT=Courier][COLOR=#00007f]Sub[/COLOR] xxx()

    [COLOR=#00007f]Dim[/COLOR] lCol [COLOR=#00007f]As[/COLOR] [COLOR=#00007f]Long[/COLOR]
    lCol = Cells(10, Columns.Count).End(xlToLeft).Column
    [/FONT][FONT=Courier]Range("A10:BZ10000").AutoFilter Field:=lCol, Criteria1:=0   
    Range("A10:BZ10000").SpecialCells(xlCellTypeVisible).Delete
    Range(Cells(1, lCol), Cells(1, lCol)).EntireColumn.Delete
[COLOR=#00007f]End[/COLOR] [COLOR=#00007f]Sub[/COLOR][/FONT]
 

Viking1221

New Member
Joined
May 25, 2017
Messages
31
correct last line:
Code:
[FONT=Courier][COLOR=#00007f]Sub[/COLOR] xxx()

    [COLOR=#00007f]Dim[/COLOR] lCol [COLOR=#00007f]As[/COLOR] [COLOR=#00007f]Long[/COLOR]
    lCol = Cells(10, Columns.Count).End(xlToLeft).Column
    [/FONT][FONT=Courier]Range("A10:BZ10000").AutoFilter Field:=lCol, Criteria1:=0   
    Range("A10:BZ10000").SpecialCells(xlCellTypeVisible).Delete
    Range(Cells(1, lCol), Cells(1, lCol)).EntireColumn.Delete
[COLOR=#00007f]End[/COLOR] [COLOR=#00007f]Sub[/COLOR][/FONT]

hello, this works great. However, it appears to only be deleting my top row and not all with row with zero. From my understanding the codes seems to be written correctly. Any ideas on why this may be?
 

Michael M

Well-known Member
Joined
Oct 27, 2005
Messages
19,751
Office Version
  1. 2016
  2. 2013
  3. 2007
Platform
  1. Windows
@Viking1221
You didn't respond to the post from @JLGWhiz.....which to me, seems to be the easiest and simplest method


Code:
Sub t()
With ActiveSheet
    . Columns(.Cells(10, Columns.Count).End(xlToLeft).Column).Delete xlShiftLeft
End With
End Sub
 
Last edited:

Viking1221

New Member
Joined
May 25, 2017
Messages
31
hello, this works great. However, it appears to only be deleting my top row and not all with row with zero. From my understanding the codes seems to be written correctly. Any ideas on why this may be?

Never mind, I figured it out, it is the way I have the numbers formatted. Zero's show as "-" I just had to change the 0 to a - and it worked. Thanks for your help.
 

Watch MrExcel Video

Forum statistics

Threads
1,122,737
Messages
5,597,826
Members
414,180
Latest member
Sir Khaya

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Top