Notifications
Clear all

Referência de Celula para compor Macro

10 Posts
5 Usuários
0 Reactions
1,624 Visualizações
(@fjjohann1)
Posts: 9
Active Member
Topic starter
 

Boa tarde,

tenho uma macro que utilizo para ocultar linhas de acordo com o valor de uma celula.
No caso, se a celula C160 for "1", as linhas 161,162,163,164 e165 serão ocultadas.

gostaria, que em vez de utilizar o número da linha ("161:165"), eu usasse um valor que está em outra celula.

pois na planilha que o macro é executado, quando por ventura eu tiver que incluir uma linha antes da linha "160" por ex. minha macro será ineficiente..
para tanto criei uma outra planlinha que me dá o número da linha que preciso.. e aí caso eu adicione uma linha na planilha original, a célula da outra planilha altera o número da linha respectiva, por exemplo: se eu adicionar uma linha a célula da outra planilha vai conter os valores 161.. 162 e 165.
aí no meu macro em vez de eu ter o número da linha fixo, eu quero referenciar essas células.
Sendo assim eu posso incluir linhas na minha planilha que o meu macro "caminhará" junto.

Sub Oculdiver()
If Range("c160").Value = "1" Then
Rows("161:165").Hidden = True

Else
Rows("161:165").Hidden = False

End If

End Sub

 
Postado : 25/02/2016 12:54 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

fjjohann1,

Boa tarde!

Dê um nome a faixa de linhas que você quer e depois utilize esse nome no seu código. quando você insere um nome a uma faixa de células, mesmo que você insira linhas antes, o Excel preservará o nome dado alterando automaticamente a faixa de linhas.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 25/02/2016 1:21 pm
(@fjjohann1)
Posts: 9
Active Member
Topic starter
 

Wagner Morel,

perdoe minha ignorância,

mas como eu faço isso?

 
Postado : 25/02/2016 1:27 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Você seleciona todas as células de C161 a C165, na interface do Excel e vai no menu Fórmulas, Painel Nomes Definidos,menu Definir Nome, item Definir nome. Daí é só dar um nome e clicar em OK.

No VBA, ao invés de:

Rows("161:165").Hidden = True

Você substitui a referência célula ("161:165") pelo nome que você deu para o intervalo.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 25/02/2016 1:37 pm
(@fjjohann1)
Posts: 9
Active Member
Topic starter
 

Wagner,

fiz a definição do nome das linhas 161:165 coloquei (Diversos)

e fiz a alteração na Macro para:

Sub Oculdiver()
If Range("c160").Value = "1" Then
Rows("Diversos").Hidden = True

Else
Rows("Diversos").Hidden = False

End If

End Sub

porém a macro não executa, da erro em tempo de execução.

porém desta forma, a celula c160 continua fixa, e caso eu insira uma linha antes dela, ela deveria ir pra c161 na macro.. como soluciono isso?

 
Postado : 25/02/2016 1:44 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não sou muito adepto a esse tipo de rotina.
Mas... creio que possa utilizar

Sub Oculdiver()
Dim iCelAtiva As Long
iCelAtiva = ActiveCell.Row
    If Range("c" & iCelAtiva).Value = "1" Then
        Rows(iCelAtiva + 1 & ":" & iCelAtiva + 5).Hidden = True
    Else
        Rows(iCelAtiva + 1 & ":" & iCelAtiva + 5).Hidden = False
    End If
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/02/2016 2:00 pm
(@fjjohann1)
Posts: 9
Active Member
Topic starter
 

Wagner, acredito que assim não é o que eu preciso.

não posso ficar com celulas fixas, no caso: uma contagem de 5 linhas fixas.. pois a qualquer momento posso incluir uma linha nova..

vamos lá.

na imagem (a) em anexo voce pode constatar a minha planilha..

na linha 160 tenho um botao onde resulta um codigo na celula c160 (0 ou 1)
na macro, faço as linhas 161:165 se ocultarem caso o valor da celula c160 seja 0.

montei outra planilha conforme na imagem (b) em anexo..

onde consigo extrair automaticamente os itens:
1. Linha de título (Diversos) a qual na minha macro atualmente esta como 160c, e na planilha (b) esse valor pode ser constatado na celula c8
2. Numero da linha inicial e final que quero extrair, que na planinha (b) esse valor pode ser encontrado nas celulas d8 e f8.

feito isso, posso incluir linhas tanto antes da linha 160 como no meio das linhas que quero ocultar,, que na minha planilha (b) ficará correto.

Sendo assim,
lá na macro:

Sub Oculdiver()
If Range("c160").Value = "1" Then
Rows("161:165").Hidden = True

Else
Rows("161:165").Hidden = False

End If

End Sub

em vez de eu fixar os itens (c160) e (161:165), eu gostaria de referenciar a celula (c8 da planilha (b)) e as celulas (d8 e 98 da planilha (b))

Muito obrigado pela paciência. Se puder me ajudar..

 
Postado : 25/02/2016 2:16 pm
(@fjjohann1)
Posts: 9
Active Member
Topic starter
 

Alguem saberia me ajudar?

 
Postado : 01/03/2016 2:03 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Disponibiliza o arquivo

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 01/03/2016 4:45 pm
(@osvaldomp)
Posts: 854
Prominent Member
 

Veja se ajuda.

Sub Oculdiver()
 If Range("C" & [C8]).Value = 1 Then
  Rows([D8] & ":" & [F8]).Hidden = True
 Else: Rows([D8] & ":" & [F8]).Hidden = False
 End If
End Sub

Osvaldo

 
Postado : 01/03/2016 7:52 pm