Notifications
Clear all

Macro destacada linha selecionada com cor

9 Posts
3 Usuários
0 Reactions
2,281 Visualizações
(@ramalho)
Posts: 18
Active Member
Topic starter
 

Senhores,

c)Como criar uma macro chamada destaca linha selecionada com cor (conforme abaixo) sendo que tenho várias abas dentro do arquivo por exemplo tenha a plan1 que utilizo a macro abaixo, mais não consigo utilizar a mesma macro na plan2, ou seja entendi que a macro é somente para a plan1.

Dim LinhaSelecAnterior As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Select Case ActiveCell.Row

Case 1, 2
'Coloque neste 'case' as linhas que não devem ser
'destacadas na seleção
'Exemplo: Linhas de título; Aqui eu defini como as linhas 1 e 2

'Remove cor de fundo da linha selecionada anteriormente
Select Case LinhaSelecAnterior.Row

Case Is <> 1, 2

Rows(LinhaSelecAnterior.Row).Interior.ColorIndex = 0

End Select

Case Else

'Altera a cor de fundo da linha selecionada
Rows(ActiveCell.Row).Interior.ColorIndex = 15

'Remove a cor de fundo quando a linha perde a seleção
If Not LinhaSelecAnterior Is Nothing Then

'Verifica se a linha atual já estava selecionada
'neste momento, caso seja uma nova linha selecionada
'remove a cor de fundo.
If ActiveCell.Row <> LinhaSelecAnterior.Row Then

Rows(LinhaSelecAnterior.Row).Interior.ColorIndex = 0

End If

Francisco Ramalho

 
Postado : 12/07/2013 2:49 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Francisco,

Boa Noite!

Você pode utilizar essa mesma macro dentro de cada uma das outras abas (planilhas) do seu arquivo. Cada planilha (aba) tem seu próprio Evento Worksheet_SelectionChange.

Para utilizar esse mesmo código nas outras planilhas, abra o editor do VBA (ALT+F11), copie o código, do lado esquerdo da janela do editor de códigos do VBA (janela chamada Projeto - VBAProject) dê um clique duplo em cada Plan existente (Plan2, Plan3...etc) e cole o códio na janela branca da direita que apareceu. Pronto! Agora é possível utilizar o mesmo código!

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 : 12/07/2013 5:26 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Alem da dica do Wagner, você tambem pode utilizar a rotina no Evento do Workbook, assim não precisará colocar a rotina no e vento de cada aba.

Siga os mesmos procedimentos que o Wagner indicou, só que na janela do VBA ao inves de clicar nas Plan(1) (2) ... de dois clique em "EstaPasta_de_trabalho", Selecione na Janela da Direita no combobox Workbook e depois escolha : SheetSelectionChange, cole sua rotina mas sem a descrição do Evento "Worksheet_SelectionChange", a linha inicial deverá ficar :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Pronto, assim ficara valendo para todas as abas.

[]s

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

 
Postado : 12/07/2013 6:16 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

É verdade, Mauro. Havia me esquecido desse evento. Muito mais simples e prático.

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 : 12/07/2013 6:27 pm
(@ramalho)
Posts: 18
Active Member
Topic starter
 

Wagner,

Estou tendo dificuldades de efetuar a rotina, pode me enviar um passo, talvez um print screen do procedimento, tentei de diversas formas, mas não consegui.

Obrigado

FRANCISCO RAMALHO

 
Postado : 13/07/2013 2:18 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ramalho, se seguiu os passos que o Wagner citou, não tem o que errar.

Para o caso do Evento no WorkBook
1°) Abrea a Janela do VBA : ALT+F11
2°) Na janela da Esquerda de dois cliques em "EstaPasta_de_trabalho"
3°) Na Janela da Direita cole a rotina abaixo :

Dim LinhaSelecAnterior As Range

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    Select Case ActiveCell.Row
    
        Case 1, 2
            'Coloque neste 'case' as linhas que não devem ser
            'destacadas na seleção
            'Exemplo: Linhas de título; Aqui eu defini como as linhas 1 e 2
            
            'Remove cor de fundo da linha selecionada anteriormente
            Select Case LinhaSelecAnterior.Row
        
        Case Is <> 1, 2
    
        Rows(LinhaSelecAnterior.Row).Interior.ColorIndex = 0
    
    End Select

    Case Else

        'Altera a cor de fundo da linha selecionada
        Rows(ActiveCell.Row).Interior.ColorIndex = 15
    
        'Remove a cor de fundo quando a linha perde a seleção
        If Not LinhaSelecAnterior Is Nothing Then
        
            'Verifica se a linha atual já estava selecionada
            'neste momento, caso seja uma nova linha selecionada
            'remove a cor de fundo.
            If ActiveCell.Row <> LinhaSelecAnterior.Row Then
            
                Rows(LinhaSelecAnterior.Row).Interior.ColorIndex = 0
            
            End If
    
        End If
    
        'Inicializa a variavel informando a seleção atual
        'que será utilizada no inicio do procedimento
        'como sendo a seleção anterior
        Set LinhaSelecAnterior = ActiveCell

    End Select

End Sub

4°) Salve, Feche e Reabra o Arquivo.

Pronto, agora a rotina será executada em qualquer aba.

[]s

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

 
Postado : 13/07/2013 2:59 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Veja uma outra forma em..
viewtopic.php?f=21&t=8818

Att

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

 
Postado : 14/07/2013 5:18 am
(@ramalho)
Posts: 18
Active Member
Topic starter
 

Ramalho, se seguiu os passos que o Wagner citou, não tem o que errar.

Para o caso do Evento no WorkBook
1°) Abrea a Janela do VBA : ALT+F11
2°) Na janela da Esquerda de dois cliques em "EstaPasta_de_trabalho"
3°) Na Janela da Direita cole a rotina abaixo :

Dim LinhaSelecAnterior As Range

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    Select Case ActiveCell.Row
    
        Case 1, 2
            'Coloque neste 'case' as linhas que não devem ser
            'destacadas na seleção
            'Exemplo: Linhas de título; Aqui eu defini como as linhas 1 e 2
            
            'Remove cor de fundo da linha selecionada anteriormente
            Select Case LinhaSelecAnterior.Row
        
        Case Is <> 1, 2
    
        Rows(LinhaSelecAnterior.Row).Interior.ColorIndex = 0
    
    End Select

    Case Else

        'Altera a cor de fundo da linha selecionada
        Rows(ActiveCell.Row).Interior.ColorIndex = 15
    
        'Remove a cor de fundo quando a linha perde a seleção
        If Not LinhaSelecAnterior Is Nothing Then
        
            'Verifica se a linha atual já estava selecionada
            'neste momento, caso seja uma nova linha selecionada
            'remove a cor de fundo.
            If ActiveCell.Row <> LinhaSelecAnterior.Row Then
            
                Rows(LinhaSelecAnterior.Row).Interior.ColorIndex = 0
            
            End If
    
        End If
    
        'Inicializa a variavel informando a seleção atual
        'que será utilizada no inicio do procedimento
        'como sendo a seleção anterior
        Set LinhaSelecAnterior = ActiveCell

    End Select

End Sub

4°) Salve, Feche e Reabra o Arquivo.

Pronto, agora a rotina será executada em qualquer aba.

[]s

Mauro,
Preciso da macro para cada plan individualmente, se utilizar para todas, as mesmas não tem formato padrão, qual é a macro?

Obrigado pela atenção dispensada.

FRANCISCO RAMALHO

 
Postado : 15/07/2013 1:43 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ramalho,

Mauro,
Preciso da macro para cada plan individualmente, se utilizar para todas, as mesmas não tem formato padrão, qual é a macro?

Se quer a macro em cada aba, é só fazer da forma que o Wagner mostrou acima, colocando no Evento de cada aba, não entendi o que quer dizer com "as mesmas não tem formato padrão", e, "qual é a macro ?".

A macro é esta que você disponibilizou.

[]s

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

 
Postado : 15/07/2013 4:24 pm