Страницы: 1
RSS
Подсчет строк умной таблицы vba, Определить последнюю заполненную строку умной таблицы без учета заголовков
 
Добрый день!
Для подсчета количества строк умной таблицы ранее использовала следующую формулу: LastRow1 = Cells(Rows.Count, 1).End(xlUp).Row - работала безупречно до тех пор, пока передо мной не встала задача посчитать количество строк в таблице, которая может быть пустой. В этом случае эта формула выводит верное значение строк (1), но первая строка является заголовком. Дальнейший код предполагает заполнение умной таблицы, а поскольку строк там 1, мы не попадаем в цикл.
               LastRow1 = Cells(Rows.Count, 1).End(xlUp).Row
               For j = 2 To LastRow1
                   If Cells(j, 1) = name And Cells(j, 6) = "Заказать" And Cells(j, 4) = ob Then
                       Cells(j, 3) = CDbl(Cells(j, 3)) + kol
                       Cells(j, 5) = Cells(j, 5) + "; " + kuda
                   Else
                       Cells(LastRow1 + 1, 1) = name
                       Cells(LastRow1 + 1, 2) = ed
                       Cells(LastRow1 + 1, 3) = kol
                       Cells(LastRow1 + 1, 4) = ob
                       Cells(LastRow1 + 1, 5) = kuda
                   End If
               Next j
Помогите решить проблему, пожалуйста
Изменено: Елена Дроздова - 15.04.2022 11:45:38
 
Попробуйте через
Код
Worksheets(1).ListObjects(1).Listrows.Count
Он считает количество строк в умной таблице без заголовков
 
Благодарю!
Следующий вопрос, наверное, уже для новой темы: как заполнять макросом умную таблицу, чтобы запись производилась не в строки на листе под умной таблицей, а в ней самой?
 
Код
Sub test()
    AddVal "test"
End Sub

Sub AddVal(myVal As Variant)
    With ActiveSheet.ListObjects(1)
        If IsEmpty(.DataBodyRange.Cells(1, 1)) Then
            '.Resize .Range.Resize(.Range.Rows.Count + 1)
            .Range.Cells(.Range.Rows.Count, 1).Value = myVal
        Else
            .Range.Cells(.Range.Rows.Count + 1, 1).Value = myVal
        End If
    End With
End Sub
 
бывает, что
количество строк в умной таблице
и
количество заполненных строк в умной таблице
могут совпадать, но это не значит что они обязаны быть одинаковыми всегда
только когда сможете сказать что конкретно вам нужно,  только тогда можете получить ответ на свой вопрос
хотя... ответ можно получить и раньше - его могут угадать))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вы правы. Этих тонкостей не счесть. Мне нужно количество заполненных строк умной таблицы
 
по какой колонке определять последнюю заполненную строку?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
По первому столбцу
 
Код
Sub test()
  Dim rg As Range
  Set rg = FistCellAtRowWithOutData(ActiveSheet.ListObjects(1))
  rg = "test"
End Sub


Function FistCellAtRowWithOutData(t, Optional c& = 1)
  Set FistCellAtRowWithOutData = _
  t.Range.Cells(c).Offset(t.Range.Cells(1).CurrentRegion.Rows.Count, 0)
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Прошу прощения, никак не могу разобраться в коде((
 
функция FistCellAtRowWithOutData
возвращает ссылку на первую свободную ячейку для переданного в нее обьекта (в функцию была передана умная таблица ActiveSheet.ListObjects(1))

как пользоваться функцией показано в процедуре Test
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо, буду разбираться
Страницы: 1
Наверх