Как ссылаться на лист по имени в функции для последней строки?

#vba

#excel #vba

Вопрос:

Я написал функцию для поиска последней строки.

 Sub test()
    Msgbox LROW(1,1)
End Sub
    
Function LROW(shtNumber as Integer, Col As Integer) as string
    Dim shtName as string
    ShtName="Sheet" amp; shtNumber
    LROW=ShtName . Cells(rows.count, col).End(xlUp).Row
End Function
 

Я получаю сообщение об ошибке

неверный квалификатор

Комментарии:

1. Удалите пробелы вокруг . ? Это будет sheets(shtname). слишком

2. см.: Ссылаться на листы по имени

3. Спасибо, Натан, у моих листов есть имена, не могу изменить их имена на лист 1 и т. Д.

Ответ №1:

ShtName это строка (которая содержит имя листа), а не лист.

Используйте что-то вроде

 Dim shtName as string
ShtName="Sheet" amp; shtNumber
Dim ws as Worksheet
Set ws = Worksheets(ShtName)  ' Consider to use ThisWorkbook.Worksheets(ShtName)
LROW = ws.Cells(rows.count, col).End(xlUp).Row