Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#38204
Olá pessoal, tudo bem?

Tenho uma planilha e gostaria de sintetizar os dados na contidos, por meio de ocultação de linhas, dada a condição de determinadas células terem ou não valor, para melhor visualização.
Código: Selecionar todos
Sub sintetiza()

Application.ScreenUpdating = False

'iterador i
Dim i As Integer
Dim marcador As Integer


marcador = 50

    'inicia-se a contagem a partir da 7ª linha
    'iteração até 50
    
    For i = 7 To marcador
        'verifica se na Coluna E ou na Coluna F da linha i há valores numéricos, caso existam segue a compilação, aqui a concatenação acusa Erro
        'Caso conheçam algum local para eu estudar sobre passagem de parâmetros com uso de aspas, por favor, indiquem. Grato.
        If ("'"E" & i' Or '"F" & i'") > 0 Then
            'caso em nenhuma das duas colunas na linha i haja valor numérico (só recebem números)
            Rows("i").EntireRow.Hidden = True
            
        End If
        
    Next i

Application.ScreenUpdating = True

End Sub
#38208
Código: Selecionar todos
Sub OcultaLinhas()
 Dim i As Long
  Application.ScreenUpdating = False
   Rows("7:50").Hidden = False
   For i = 7 To 50
    Rows(i).Hidden = (Application.Count(Cells(i, 5).Resize(, 2)) = 0)
   Next i
  Application.ScreenUpdating = True
End Sub
#38215
Olá osvaldomp, tudo bem?

O código ficou bem mais "soft", mas ainda necessito inserir uma condição de verificação, uma instrução tipo if, imagino.
Existem outras colunas nestas linhas que possuem dados e estes somente serão exibidos se estritamente as células do intervalo de linhas 7 a 50 das colunas E ou F não estiverem vazias, caso contrário, não serão exibidos.

Por exemplo, se E7 ou F7 possuir algum dado, a linha é exibida.

Um outro ponto que gostaria de perguntar é quando o uso do objeto ActiveSheet ao invés de Application... Para que a execução do código seja somente na planilha ativa, não interferindo as outras.

Grato.
Aleksander
#38217
aleksander escreveu:
Existem outras colunas nestas linhas que possuem dados e estes somente serão exibidos se estritamente as células do intervalo de linhas 7 a 50 das colunas E ou F não estiverem vazias, caso contrário, não serão exibidos.
Amigo, desculpe, eu não entendi o você quis dizer :?: . Explique com exatidão.

Por exemplo, se E7 ou F7 possuir algum dado, a linha é exibida.
No post anterior você escreveu ~~~> caso em nenhuma das duas colunas na linha i haja valor numérico (só recebem números). Foi nessa afirmação que elaborei o critério para ocultar a linha. Explique o que você quer, pois antes você informou "número" e agora mudou para "dado"!. Disponibilize o arquivo Excel com algumas linhas com dados e explique na própria planilha quais linhas você quer ocultar e o critério para ocultar.

Um outro ponto que gostaria de perguntar é quando o uso do objeto ActiveSheet ao invés de Application... Para que a execução do código seja somente na planilha ativa, não interferindo as outras.
No código não há referências a qualquer planilha, então SEMPRE, SEMPRE, SEMPRE todos os comandos tomarão por base a planilha ativa.
Quanto ao uso de "Application", há 3 ocorrências desse comando no código e você não informou a qual delas você se referiu. No entanto, nenhuma das 3 ocorrências tem a ver com planilha ativa e ou interfere com outras planilhas. Totalmente sem fundamento técnico a sua dúvida!
Editado pela última vez por osvaldomp em 31 Out 2018 às 10:27, em um total de 1 vez.
#38240
O código que passei oculta a linha se E e F estiverem vazias. Ex. E7 vazia e F7 vazia

Se você quer ocultar a linha caso E ou F estiver vazia, ex. E7 vazia ou F7 vazia, então substitua a linha abaixo
Rows(i).Hidden = (Application.Count(Cells(i, 5).Resize(, 2)) = 0)

por esta
Rows(i).Hidden = (Application.Count(Cells(i, 5).Resize(, 2)) < 2)

Neste segundo caso, na planilha que você disponibilizou, todas as linhas 7:50 serão ocultadas. É esse o resultado desejado?

Se você quiser reexibir as linhas a fim de efetuar lançamentos, então rode o código abaixo.
Código: Selecionar todos
Sub ReexibeLinhas()
 Rows("7:50").Hidden = False
End Sub
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord