Ir ao conteúdo
  • Cadastre-se

Macro "Oculta" - Excel


Ir à solução Resolvido por minoso,

Posts recomendados

Galera, boa tarde.
 
Estou com um problema. Tenho as seguintes Macros:

 

 1)

Public Sub btnContabefinan()Call OpenSubOperation("Utilização de Equipamentos") 

2)

Sub OpenSubOperation(ByVal nameOperation As String)'ActiveSheet.UnprotectApplication.ScreenUpdating = FalseDim FinalRow As LongDim i As LongRange(Cells(32, 1), Cells(10000, 1)).EntireRow.Hidden = FalseFinalRow = Cells(Rows.Count, 21).End(xlUp).RowRange(Cells(32, 1), Cells(FinalRow, 1)).EntireRow.Hidden = TrueFor i = 32 To FinalRow    If Cells(i, 21).Value = nameOperation Then        Cells(i, 21).EntireRow.Hidden = False    End IfNext i'ActiveSheet.ProtectApplication.ScreenUpdating = True

3)

Private Sub ComboBox3_Change()ActiveSheet.UnprotectApplication.ScreenUpdating = False    Range("K7").Value = ComboBox3.ValueSheets("PROCV").Range("i10").Value = Sheets("PROCV").Range("i11").ValueActiveSheet.Unprotect   Application.ScreenUpdating = True

A Macro 1 chama a Macro 2, que tem a simples função de ocultar algumas linhas.

 

O problema é que quando chega na linha 6  - Range(Cells(32, 1), Cells(10000, 1)).EntireRow.Hidden = False -  ele "chama" (mesmo sem nenhum Call) a Macro 3.

 

Eu acho que na hr que o código oculta as linhas, alguma outra macro executa a Macro 3 (tipo aquelas macros que, ao clicar em uma célula, pinta toda a linha sem nenhum tipo de start).

 

Mas eu não sei que macro "oculta" é essa. Já li e reli todos os comandos e não consegui identificar.

 

Alguém sabe de algo semelhante?

 

Obs1: Lógicamente, a macro 3 ser executada nesse momento me traz alguns problemas.

 

Obs2: Infelizmente, não posso disponibilizar o arquivo (que não é meu e nem fui eu qm escreveu).

 

valeu...

Link para o comentário
Compartilhar em outros sites

@Fernando.Igor

 

É Minoso :)

 

Com relação ao problema, clique com o botão direito do mouse sobre o objeto e, em propriedades, marque a opção "não mover ou dimensionar com células".

 

Teste se assim funciona.

 

Na verdade não tem nada 'oculto' acionando a macro 3 não. Acontece que o ComboBox3 com certeza está no range das linhas que você está ocultando e quando isso ocorre ele sofre alterações de posições. Logo, a macro 3 só é acionada quando o objeto em questão sofre alguma alteração, por isso a propriedade _change, entendeu?

 

Resumindo: ao ocultar as linhas, o objeto muda de posição e automaticamente aciona a macro 3.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Hahaha Foi mal, cara. Não foi por maldade! :)

 

Mas voltando...

 

Fiz o que você falou e mudei a propriedade... mas o problema continua! :(

 

Eu tinha entendido mais ou menos do jeito que você explicou... só não tava entendendo qual estava sendo a "mudança" (change). E parece que não é isso também.

 

Duas coisas que eu acho que não seja isso: 1) A macro 2 oculta e exibi as linhas entre 32 e 10000 e a combo está na linha 6, longe desse intervalo; e 2) Eu ocultei uma linha (também bem longe da combobox3) manualmente pra ver se era o "ato de ocultar" que estava dando o problema mesmo, e a macro 3 foi executada.

 

Será que tem alguma outra ideia?

 

Mas de qualquer forma, valeu ae! 

Link para o comentário
Compartilhar em outros sites

Ok, Minoso.

 

Recortei o arquivo inteiro pra poder enviar. Então ele está totalmente sem sentido eu acho, ficou só as abas do erro mesmo.

 

Na primeira aba, no campo "Modo", sempre que se faz uma alteração, muda-se a célula i10 da aba Procv. E quando se roda uma dessas três caixas vermelhas (que ocultam linhas) esse número desaparece (por causa da combobox3_change).

 

Ve se dá pra entender...

 

valeu.. Abs!

 

Teste.zip

Link para o comentário
Compartilhar em outros sites

  • Solução

@Fernando.Igor

 

Achei o problema.

 

As listas das opções dos ComboBox estão na mesma planilha que você está ocultando as linhas e, especificamente o ComboBox3 tem uma lista maior, que invade o range a partir da linha 32 que a sua macro que oculta é acionada.

 

Então, toda vez que as linhas abaixo da 32 são ocultas, algumas opções (coluna AF) também são ocultas nesse meio e, exatamente quando isso acontece, o CHANGE do ComboBox3 é acionado.

 

Uma sugestão minha: sempre que trabalho com essa estrutura, eu dedico uma única aba, geralmente chamada de 'auxiliar', nela eu tenho tudo desse tipo de informação.

 

Experimente alocar todas as linhas nessa aba, longe das linhas que são ocultas.

 

Eu testei aqui e funcionei.

 

Se quiser ver na prática, fala o ComboBox3 ter um range da lista do AF1 até o AF19 e teste a macro do jeito que está. Verá que nada de 'ruim' acontece.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Ahhhhhhhhhh... caramaba! Nunca pensaria nisso! Fiz o teste aqui e já deu certo.

 

Realmente, trabalhar em planihas Aux é sempre melhor. Vou fazer esses ajustes e colocar essa lista em outro lugar.

 

valeu pela ajuda, cara. Grande abraço!

 

 

PS: Acabei de criar um tópico sobre um outro probleminha que estou tendo aqui. Se puder contribuir com sua ajuda lá... ;)

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...