![]() |
Variable Acting Like a Constant?
I have a problem with this statement: myrow =
Range("A1").CurrentRegion.Rows.Count + 1, or as an alternative myrow = Range("A1").End(xlDown).Row + 1, when the number of rows of data on a worksheet changes. My goal, using this variable, is to determine the row number of the line just below the last line of data. Assume a worksheet with 10 rows of data with cell A1 included in the first row of data. myrow = 11, and both of the two expressions just mentioned will also evaluate to 11. That's great so far. Assume later in the procedure some code adds 10 more rows of data starting at row 11, increasing the total number of rows of data to 20. At this point I have found that myrow still equals 11 while either of the two expressions now evaluate to 21, the correct number. If subsequently, more rows of data are added, the value of myrow remains constant at 11 while Range("A1").CurrentRegion.Rows.Count or Range("A1").End(xlDown).Row + 1 will evaluate again to the correct number. Why is the variable myrow acting like a constant? Note in my declarations I did not precede myrow with "Const". How can I get myrow to act like a variable? Thanks. |
Variable Acting Like a Constant?
You have to execute the code that sets myRow again whenever the data
changes, or more appropriately, just prior to the code that uses that variable. Variables are not event driven, that is they do not update when whatever they refer to changes. -- HTH RP (remove nothere from the email address if mailing direct) "George Boynton" wrote in message ... I have a problem with this statement: myrow = Range("A1").CurrentRegion.Rows.Count + 1, or as an alternative myrow = Range("A1").End(xlDown).Row + 1, when the number of rows of data on a worksheet changes. My goal, using this variable, is to determine the row number of the line just below the last line of data. Assume a worksheet with 10 rows of data with cell A1 included in the first row of data. myrow = 11, and both of the two expressions just mentioned will also evaluate to 11. That's great so far. Assume later in the procedure some code adds 10 more rows of data starting at row 11, increasing the total number of rows of data to 20. At this point I have found that myrow still equals 11 while either of the two expressions now evaluate to 21, the correct number. If subsequently, more rows of data are added, the value of myrow remains constant at 11 while Range("A1").CurrentRegion.Rows.Count or Range("A1").End(xlDown).Row + 1 will evaluate again to the correct number. Why is the variable myrow acting like a constant? Note in my declarations I did not precede myrow with "Const". How can I get myrow to act like a variable? Thanks. |
Variable Acting Like a Constant?
You could be able to get away with something like that if you could code it
in a cell, name the cell and use that name as a variable or as RANGE("name").Value in VBA. That way Excel would recalculate the cell's formula and produce a new result whenever something changes. =ROWS(rangename) could be what you need IF in your code you make sure that "rangename" expands whenever you add a line in your worksheet. |
All times are GMT +1. The time now is 07:25 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com