Функция Len, возвращающая ноль в переменную

#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 , которое, вероятно, зависит от книги.