Добрый день! Для подсчета количества строк умной таблицы ранее использовала следующую формулу: 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 Помогите решить проблему, пожалуйста
Благодарю! Следующий вопрос, наверное, уже для новой темы: как заполнять макросом умную таблицу, чтобы запись производилась не в строки на листе под умной таблицей, а в ней самой?
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
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!