Forum Discussion
ClaireMcF
Mar 02, 2023Brass Contributor
Loop Through Worksheets and Counts Populated Rows
I want to create a macro that I can run each week. I have a workbook and on the first worksheet I want to count how many populated rows there are on the other worksheets. So in this example I want a...
rzaneti
Mar 04, 2023Iron Contributor
Hi ClaireMcF ,
I'm sending you a file to you test if the Macro works for you. The code is the following:
Sub count_indexes()
Dim ws As Worksheet 'All Worksheets variable
Dim CurrentSheetName As String 'Variable to store the name of the Sheet that the program is reading
Dim CurrentSheetCount As Integer 'Variable to store the qty of rows of the Sheet that the program is reading
Dim RowToInsert As Integer 'Variable to store the row to be filled in INDEX Sheet
RowToInsert = 3 'Initially we set the row to be filled in INDEX Sheet as 3. Feel free to change it according to your use case
For Each ws In Worksheets 'Loop to run all of the Sheets from the file
If ws.Name <> "INDEX" Then 'Apply this block of code only if the current Sheet is not INDEX
CurrentSheetName = ws.Name 'Store the Sheet name (note that, in your print, the stored name would be 'Andrew_Mohan', and not 'Mohan'
Sheets(CurrentSheetName).Activate 'Activate the Sheet
Range("A2").End(xlDown).Activate 'Check the range with populated rows
CurrentSheetCount = ActiveCell.Row - 1 'Store the row number and subtract 1, as we have to discount the "A1" cell
Sheets("INDEX").Activate 'Activate Index Sheet
Cells(RowToInsert, 2).Value = CurrentSheetName 'Store Sheet name into column B (you can change it according to your use case)
Cells(RowToInsert, 3).Value = CurrentSheetCount 'Store the qty of populated rows into column C (you can change it according to your use case)
RowToInsert = RowToInsert + 1 'Increase the row counter for the next run of the loop
End If
Next ws
End Sub
You probably will have to make some changes to adapt it to your use case, so I added some comments to make this task easy. Please, let me know if it works for you and, if you have any question or need any help for change it, let me know.
- ClaireMcFMar 06, 2023Brass ContributorHi rzaneti
Thanks for your reply - this is really helpful. I have tried to run the code on my workbook, but I am getting a debug error at the :
CurrentSheetCount = ActiveCell.Row - 1 'Store the row number and subtract 1, as we have to discount the "A1" cell
and the code does not execute.
Can you help at all please?
Thanks
Claire- rzanetiMar 06, 2023Iron Contributor
Hi, ClaireMcF .
There are some possible reasons for an error at this line of code. Could you please send an image of the error message?
One of the possible problems is the error 6 (overflow), which will happen if we have an empty Sheet or if you have a specific Sheet with a large number of rows (more than 32,767 rows). Can you confirm if you have any of these cases in your file?
- ClaireMcFMar 08, 2023Brass ContributorHi, sorry for delayed response. I am still looking at this as I can't get your macro to run properly. Need to spend some time just having a run through it. Thanks