There are LOTS of ways to determine the number of "active" rows of data.
Which will work best will depend on the nature of your data.
 
For instance:
your data has a column header in row 1
and each row has a value in column "A".
 
There are some VBA statements that utilize Excel worksheet functions.
 
You can use:
 
nRows = Application.worksheetfunction.counta(activesheet.range("A1:A1048576")
 
this will give you a count of non-blank cells in column "A".
 
Then you can use:
 
For I = 2 to nRows
...
next I
 
this, of course also answers your loop question.
====================
 
Now, if your data perhaps has some blank values in some of the cells, then you 
need another alternative.
 
In Excel, hitting Ctrl-End takes you to the last Row/Column that has been USED 
in the current worksheet.
 
If you record a macro, hit Ctrl-End, then stop recording,
your macro shows:
 
 ActiveCell.SpecialCells(xlLastCell).Select
 
Now, you COULD find the row number of the current row by using:
nrows = ActiveCell.Row
 
but that is kind-of "sloppy", since what you're doing is using a program to 
simulate a manual operation that provides input to a program.
 
Instead, you can combine the two statements:
 
nRows = ActiveCell.SpecialCells(xlLastCell).Row
 
----------------------------
Note:
 
The CountA worksheet function will evaluate all cells in the range, regardless 
of whether they are visible (as in with the use of a filter)
But the xlLastCell technique will only evaluate the displayed cells.
 
 
also, many (most?) programming languages have "reserved words".
That is, terms that should not be used as variables or subroutine names because 
they are already in use.
 
Excel/VBA doesn't FORCIBLY reserve most of these words, but it's still good 
programming practice to avoid their use.
 
.Length is a "property" of the textrange object.
that's why I used nRows instead.
 
 
Hope this helps.
 
 
 
Paul
-----------------------------------------
“Do all the good you can,
By all the means you can,
In all the ways you can,
In all the places you can,
At all the times you can,
To all the people you can,
As long as ever you can.” - John Wesley
-----------------------------------------


>________________________________
> From: Gerrit Grundling <totallyplanecr...@gmail.com>
>To: excel-macros@googlegroups.com 
>Sent: Tuesday, February 25, 2014 9:33 AM
>Subject: $$Excel-Macros$$ VBA for-loop: for I = (current cell) to (count 
>active cells below)
>  
>
>
>Greetings, all
>
>
>In MatLab I can control a for-loop by specifying the length of a vector as the 
>number of times, e.g.
>
>
>forI =1:length(vector)
>     forJ =2:(length(vector)-1)
>.
>.
>.
>    end
>end
>
>
>
>
>Now I am in Excel, and I want the for-loop to be run as many times as the 
>length of a column of entries starting in a specific cell (e.g. Cells(10, 1)) 
>and ending in the last active cell in that column. This way, if the number of 
>inputs change, I won't have to redesign the code. Unfortunately, the statement
>
>
>ForI =1to Length'where Length is the number of active rows in the column
>.
>.
>.Next
>
>
>doesn't work.
>
>
>So, my two questions are:
>
>
>1. How do I count the number of active cells in a column below a cell of my 
>choice?
>2. How do I use this VB variable (not visible on the spread sheet) to control 
>the number of times the loop has to run?
>
>
>Thanks
>
-- 
>Are you =EXP(E:RT) or =NOT(EXP(E:RT)) in Excel? And do you wanna be? It’s 
>=TIME(2,DO:IT,N:OW) ! Join official Facebook page of this forum @ 
>https://www.facebook.com/discussexcel
> 
>FORUM RULES
> 
>1) Use concise, accurate thread titles. Poor thread titles, like Please Help, 
>Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get 
>quick attention or may not be answered.
>2) Don't post a question in the thread of another member.
>3) Don't post questions regarding breaking or bypassing any security measure.
>4) Acknowledge the responses you receive, good or bad.
>5) Jobs posting is not allowed.
>6) Sharing copyrighted material and their links is not allowed.
> 
>NOTE  : Don't ever post confidential data in a workbook. Forum owners and 
>members are not responsible for any loss.
>--- 
>You received this message because you are subscribed to the Google Groups "MS 
>EXCEL AND VBA MACROS" group.
>To unsubscribe from this group and stop receiving emails from it, send an 
>email to excel-macros+unsubscr...@googlegroups.com.
>To post to this group, send email to excel-macros@googlegroups.com.
>Visit this group at http://groups.google.com/group/excel-macros.
>For more options, visit https://groups.google.com/groups/opt_out.
>
>
>    

-- 
Are you =EXP(E:RT) or =NOT(EXP(E:RT)) in Excel? And do you wanna be? It’s 
=TIME(2,DO:IT,N:OW) ! Join official Facebook page of this forum @ 
https://www.facebook.com/discussexcel

FORUM RULES

1) Use concise, accurate thread titles. Poor thread titles, like Please Help, 
Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get 
quick attention or may not be answered.
2) Don't post a question in the thread of another member.
3) Don't post questions regarding breaking or bypassing any security measure.
4) Acknowledge the responses you receive, good or bad.
5) Jobs posting is not allowed.
6) Sharing copyrighted material and their links is not allowed.

NOTE  : Don't ever post confidential data in a workbook. Forum owners and 
members are not responsible for any loss.
--- 
You received this message because you are subscribed to the Google Groups "MS 
EXCEL AND VBA MACROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to excel-macros+unsubscr...@googlegroups.com.
To post to this group, send email to excel-macros@googlegroups.com.
Visit this group at http://groups.google.com/group/excel-macros.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to