
Fundo: Eu tenho uma planilha que extrai dados de um banco de dados para criar rótulos de produtos (usando fórmulas de pesquisa de correspondência de índice). A planilha possui uma macro que gravei que filtra as linhas em branco e ajusta automaticamente as linhas restantes. (Não estou muito familiarizado com VBA, então desculpe minha ignorância)
Planilha: Os dados são preenchidos em duas colunas (B e C) e 25 linhas. Preciso de ajuda para criar uma macro que complete todas essas tarefas assim que o número do produto for inserido; filtre as linhas em branco e ajuste automaticamente as linhas restantes, meça a altura da linha para cada uma das linhas restantes e obtenha o total combinado para que as alturas das linhas apareçam (de preferência na célula B2). (ou seja, "Alturas das linhas: 64")
Toda e qualquer ajuda será apreciada e desde já agradeço!
Responder1
Com dados filtrados como:
Código como:
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
Informará o número de linhas visíveis e a altura total dessas linhas.
OBSERVAÇÃO:
A unidade de altura é umapontar, onde cada ponto é 0,013888889 polegadas(com zoom de 100%). Isso pressupõe que você não esteja usando o jumbotron como monitor.
Responder2
Para obter a altura/contagem de forma variável, rápida e fácil basta colocar no seu módulo:
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
em seguida, basta colocar na célula que você deseja que a saída =getCount(B4:B25)&" "&getHeight(B2:B25)/96
obtenha a contagem e a altura ... mas lembre-se de que o ppi muda com suas configurações, resolução e tamanho do monitor (então você pode precisar obter o ppi real e alterar o /96
, mas existem inúmeras maneiras rápidas de fazer isso... basta olhar aqui ou usar o Google)
Para a configuração do filtro e da altura automática apenas "gravar macro" é um começo perfeito, agora você precisa configurar o filtro de forma variável. Para obter o filtro variável, basta gravar enquanto o altera e depois substituir o valor do filtro por Range("A1").Value
(altere A1 para qualquer célula que você deseja usar como filtro)
Se você ainda tiver problemas para fazer isso, basta perguntar no StackOverflow (mas você precisa mostrar o código do que você já tem ou eles podem ficar bravos): P