Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi,
Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Gwen
What is not working ? You can also try Harlan's Function that you can use in a worksheet cell Function lr(Optional r As Range) As Variant Dim ur As Range, c As Range, i As Long, n As Long 'there arguments for & against volatility - optional to uncomment Application.Volatile If r Is Nothing Then Set r = Application.Caller If Not TypeOf r Is Range Then Set r = ActiveCell Set ur = r.Parent.UsedRange n = ur.Rows.Count For i = n To 1 Step -1 Set c = ur.Cells(i, 1) If Not IsEmpty(c.Value) Then Exit For If Not IsEmpty(c.End(xlToRight).Value) Then Exit For Next i lr = ur.Row + i - 1 End Function Then use this in a worksheet cell =lr() -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Set r = ActiveSheet.UsedRange
nLastRow = r.Rows.Count + r.Row - 1 -- Gary's Student "Gwen" wrote: Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I get the number for the last for only some of sheets in cell N1.
Not all of the sheets. "Ron de Bruin" wrote: Hi Gwen What is not working ? You can also try Harlan's Function that you can use in a worksheet cell Function lr(Optional r As Range) As Variant Dim ur As Range, c As Range, i As Long, n As Long 'there arguments for & against volatility - optional to uncomment Application.Volatile If r Is Nothing Then Set r = Application.Caller If Not TypeOf r Is Range Then Set r = ActiveCell Set ur = r.Parent.UsedRange n = ur.Rows.Count For i = n To 1 Step -1 Set c = ur.Cells(i, 1) If Not IsEmpty(c.Value) Then Exit For If Not IsEmpty(c.End(xlToRight).Value) Then Exit For Next i lr = ur.Row + i - 1 End Function Then use this in a worksheet cell =lr() -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Gary's Student
UsedRange is not always the correct range See http://www.contextures.com/xlfaqApp.html#Unused -- Regards Ron de Bruin http://www.rondebruin.nl "Gary''s Student" wrote in message ... Set r = ActiveSheet.UsedRange nLastRow = r.Rows.Count + r.Row - 1 -- Gary's Student "Gwen" wrote: Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Wrong results ?
Is the row number to high ? -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... I get the number for the last for only some of sheets in cell N1. Not all of the sheets. "Ron de Bruin" wrote: Hi Gwen What is not working ? You can also try Harlan's Function that you can use in a worksheet cell Function lr(Optional r As Range) As Variant Dim ur As Range, c As Range, i As Long, n As Long 'there arguments for & against volatility - optional to uncomment Application.Volatile If r Is Nothing Then Set r = Application.Caller If Not TypeOf r Is Range Then Set r = ActiveCell Set ur = r.Parent.UsedRange n = ur.Rows.Count For i = n To 1 Step -1 Set c = ur.Cells(i, 1) If Not IsEmpty(c.Value) Then Exit For If Not IsEmpty(c.End(xlToRight).Value) Then Exit For Next i lr = ur.Row + i - 1 End Function Then use this in a worksheet cell =lr() -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Usedrange is always the correct range if you want what excel is maintaining
detailed information on. If you want the last cell containing data, then that isn't what it provides. -- Regards, Tom Ogilvy "Ron de Bruin" wrote in message ... Hi Gary's Student UsedRange is not always the correct range See http://www.contextures.com/xlfaqApp.html#Unused -- Regards Ron de Bruin http://www.rondebruin.nl "Gary''s Student" wrote in message ... Set r = ActiveSheet.UsedRange nLastRow = r.Rows.Count + r.Row - 1 -- Gary's Student "Gwen" wrote: Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thank you Ron. Is UsedRange always available from other than ActiveSheet??
Perhaps a simpler solution is anticipate the need and to define a Named Range on each sheet that corresponds to the last row on that sheet. Each last row would then always be available. -- Gary's Student "Ron de Bruin" wrote: Hi Gary's Student UsedRange is not always the correct range See http://www.contextures.com/xlfaqApp.html#Unused -- Regards Ron de Bruin http://www.rondebruin.nl "Gary''s Student" wrote in message ... Set r = ActiveSheet.UsedRange nLastRow = r.Rows.Count + r.Row - 1 -- Gary's Student "Gwen" wrote: Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
No, not at all. The last row range from 13 to 2554.
I am using the harlan function you provided. Thank you. However, I would appreciate some guidance in using the function to place the last row value in "A1" of ever sheet. thx "Ron de Bruin" wrote: Wrong results ? Is the row number to high ? -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... I get the number for the last for only some of sheets in cell N1. Not all of the sheets. "Ron de Bruin" wrote: Hi Gwen What is not working ? You can also try Harlan's Function that you can use in a worksheet cell Function lr(Optional r As Range) As Variant Dim ur As Range, c As Range, i As Long, n As Long 'there arguments for & against volatility - optional to uncomment Application.Volatile If r Is Nothing Then Set r = Application.Caller If Not TypeOf r Is Range Then Set r = ActiveCell Set ur = r.Parent.UsedRange n = ur.Rows.Count For i = n To 1 Step -1 Set c = ur.Cells(i, 1) If Not IsEmpty(c.Value) Then Exit For If Not IsEmpty(c.End(xlToRight).Value) Then Exit For Next i lr = ur.Row + i - 1 End Function Then use this in a worksheet cell =lr() -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
This function is working correct
Function lastrow(sh As Worksheet) Maybe there is a space in a cell below your real data Send me your problem workbook private and I look at it -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... No, not at all. The last row range from 13 to 2554. I am using the harlan function you provided. Thank you. However, I would appreciate some guidance in using the function to place the last row value in "A1" of ever sheet. thx "Ron de Bruin" wrote: Wrong results ? Is the row number to high ? -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... I get the number for the last for only some of sheets in cell N1. Not all of the sheets. "Ron de Bruin" wrote: Hi Gwen What is not working ? You can also try Harlan's Function that you can use in a worksheet cell Function lr(Optional r As Range) As Variant Dim ur As Range, c As Range, i As Long, n As Long 'there arguments for & against volatility - optional to uncomment Application.Volatile If r Is Nothing Then Set r = Application.Caller If Not TypeOf r Is Range Then Set r = ActiveCell Set ur = r.Parent.UsedRange n = ur.Rows.Count For i = n To 1 Step -1 Set c = ur.Cells(i, 1) If Not IsEmpty(c.Value) Then Exit For If Not IsEmpty(c.End(xlToRight).Value) Then Exit For Next i lr = ur.Row + i - 1 End Function Then use this in a worksheet cell =lr() -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
#11
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks
The data is very sensitive so I can't send the workbook "Ron de Bruin" wrote: This function is working correct Function lastrow(sh As Worksheet) Maybe there is a space in a cell below your real data Send me your problem workbook private and I look at it -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... No, not at all. The last row range from 13 to 2554. I am using the harlan function you provided. Thank you. However, I would appreciate some guidance in using the function to place the last row value in "A1" of ever sheet. thx "Ron de Bruin" wrote: Wrong results ? Is the row number to high ? -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... I get the number for the last for only some of sheets in cell N1. Not all of the sheets. "Ron de Bruin" wrote: Hi Gwen What is not working ? You can also try Harlan's Function that you can use in a worksheet cell Function lr(Optional r As Range) As Variant Dim ur As Range, c As Range, i As Long, n As Long 'there arguments for & against volatility - optional to uncomment Application.Volatile If r Is Nothing Then Set r = Application.Caller If Not TypeOf r Is Range Then Set r = ActiveCell Set ur = r.Parent.UsedRange n = ur.Rows.Count For i = n To 1 Step -1 Set c = ur.Cells(i, 1) If Not IsEmpty(c.Value) Then Exit For If Not IsEmpty(c.End(xlToRight).Value) Then Exit For Next i lr = ur.Row + i - 1 End Function Then use this in a worksheet cell =lr() -- Regards Ron de Bruin http://www.rondebruin.nl "Gwen" wrote in message ... Hi, Please help. I am trying to get the last row of every shee to use in a sumproduct formula. I am using the below code. For some reason it only works on some of the sheets. Thx Sub shname() Dim wks As Worksheet Dim shlast As Long Dim r As Range For Each wks In ThisWorkbook.Worksheets shlast = lastrow(wks) Set r = wks.Range("N1") r.Value = shlast Next wks Application.ScreenUpdating = True End Sub Function lastrow(sh As Worksheet) ('found on the web) On Error Resume Next lastrow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Finding Info from sheet 1 and removing only those rows from sheet | Excel Discussion (Misc queries) | |||
Finding data of one sheet in another sheet | Excel Programming | |||
Better way of finding last row on sheet | Excel Programming | |||
finding a value thats present more than once in a sheet | Excel Programming | |||
Finding last sheet | Excel Programming |