
Фон: У меня есть таблица, которая извлекает данные из базы данных для создания этикеток продуктов (используя формулы поиска соответствия индексу). На таблице есть записанный мной макрос, который отфильтровывает пустые строки и автоматически подгоняет оставшиеся строки. (Я не очень хорошо знаком с VBA, поэтому, пожалуйста, простите мое невежество)
Рабочий лист: Данные заполняются в двух столбцах (B и C) и 25 строках. Мне нужна помощь в создании макроса, который выполнит все эти задачи после ввода номера продукта; отфильтрует пустые строки и автоматически подгонит оставшиеся строки, измерит высоту каждой из оставшихся строк и получит общую сумму для отображения высот строк (предпочтительно в ячейке B2). (т. е. "Высота строк: 64")
Любая помощь приветствуется и заранее благодарна!
решение1
С отфильтрованными данными, такими как:
Код типа:
Sub TotalHeight()
Dim HowTall As Long
Dim Kount As Long
HowTall = 0
Kount = 0
For i = 2 To 25
Set r = Cells(i, "A").EntireRow
If Not r.Hidden Then
HowTall = HowTall + r.RowHeight
Kount = Kount + 1
End If
Next i
MsgBox Kount & vbCrLf & HowTall
End Sub
Сообщит вам количество видимых рядов и общую высоту этих рядов.
ПРИМЕЧАНИЕ:
Единица высоты — этоточка, где каждая точка составляет 0,013888889 дюйма(при 100% увеличении). Это предполагает, что вы не используете джамботрон в качестве монитора.
решение2
Чтобы быстро и легко получить высоту/количество в переменной, просто вставьте свой модуль:
Public Function getHeight(rng As Range) As Long
getHeight = rng.Height
End Function
Public Function getCount(rng As Range) As Long
getCount = rng.SpecialCells(xlCellTypeVisible).Rows.Count
End Function
затем просто введите в ячейку, которую вы хотите вывести, =getCount(B4:B25)&" "&getHeight(B2:B25)/96
чтобы получить количество и высоту... но имейте в виду, что ppi меняется в зависимости от ваших настроек, разрешения и размера монитора (поэтому вам может потребоваться получить реальное ppi и изменить /96
, но есть масса быстрых способов сделать это... просто посмотрите здесь или используйте Google)
Для настройки фильтра и автовысоты просто "record macro" - это идеальное начало, теперь вам нужно установить фильтр в переменном виде. Чтобы получить переменный фильтр, просто записывайте, изменяя его, а затем замените filtervalue на Range("A1").Value
(измените A1 на любую ячейку, которую вы хотите использовать в качестве фильтра)
Если у вас все еще возникнут проблемы, просто спросите на StackOverflow (но вам нужно показать код того, что у вас уже есть, иначе они могут разозлиться) :P