#excel #vba
#excel #vba
Вопрос:
Застрял в проблеме с приведенным ниже кодом, используя шаг F8, функция Len получает значение, но не помещает его в переменную Lresult, не уверен, что я делаю неправильно:
Function lastrownum(lrbook As String, lrsheet As String, lrcolumn As String, charnum As Long)
'for any workbook/sheet/column looks from bottom up for character amount greater than specified (charnum)
Workbooks(lrbook).Sheets(lrsheet).Activate
Dim tbbrows As Long, tbhrows As Long
Dim lngRow As Long
Dim lngRows As Long
lngRows = Range(lrcolumn amp; Rows.Count).End(xlUp).Row
Dim Lresult as long
For lngRow = lngRows To 160 Step -1
Lresult = Len(Range(lrcolumn amp; lngRow).Value)
If Lresult > charnum Then
lastrownum = lngRow
GoTo endloop
End If
Next
endloop:
End Function
Sub tesit()
MsgBox lastrownum(reportfile, "BANT AJEs", "C", 6)
End Sub
Комментарии:
1. Вместо передачи имени книги и имени листа передайте объект worksheet, а затем убедитесь, что все
Range
вызовы полностью соответствуют этому рабочему листу.2. Вместо
GoTo endloop
, используйтеExit Function
.3. Ваш код работает для меня. (хотя это может потребовать большой очистки)
4. Может быть, у вас нет значения в столбце C, длина которого больше 6? И вы должны попытаться отправить
reportfile
параметр в виде строки.5. И хотя ваш метод, похоже, работает для всех книг, существует значение
160
, которое, вероятно, зависит от книги.