Notifications
Clear all

Linha sendo Colorida enquanto Célula está selecionada

7 Posts
5 Usuários
0 Reactions
1,688 Visualizações
(@tonilanis)
Posts: 32
Eminent Member
Topic starter
 

Neste mesmo fórum vi esta dúvida ser respondida a outro participante.
Eu pretendia usar num projeto meu, mas me deparei com um "problema".
As linhas vão sendo coloridas e permanecem com a cor que receberam na medida em que outras linhas vão sendo selecionadas, porém meu desejo é que quando uma linha perde o foco esta volte a ficar como antes e a próxima ao linha que receber o foco passe a adquirir cor. Como fazer isso?

Dim Linha As Long 'Variavel global

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim ColunaInicial As Integer
Dim ColunaFinal As Integer
On Error Resume Next

ColunaInicial = 2
ColunaFinal = 7

'limpa a cor anterior
ThisWorkbook.ActiveSheet.Range(Cells(Linha, ColunaInicial), Cells(Linha, ColunaFinal)).Interior.ColorIndex = xlNone
'Variavel global recebe a o numero da linha atualmente selecionada
Linha = ActiveCell.Row
'Destaca linha atualmente selecionada
ThisWorkbook.ActiveSheet.Range(Cells(Linha, ColunaInicial), Cells(Linha, ColunaFinal)).Interior.ColorIndex = 6
End Sub

 
Postado : 05/10/2015 9:53 pm
carlosrgs
(@carlosrgs)
Posts: 631
Prominent Member
 

Cara eu tenho um código aqui que colore a linha/coluna que está selecionada.

Preencher Linha + Coluna.
Código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call Módulo1.Destacar
End Sub

Módulo

Public Sub Destacar()
ActiveSheet.Rows.Interior.ColorIndex = 0
ActiveSheet.Columns.Interior.ColorIndex = 0
ActiveCell.EntireRow.Interior.ColorIndex = 36
ActiveCell.EntireColumn.Interior.ColorIndex = 36
End Sub

Preencher Somente Linha.
Código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call Módulo1.Destacar
End Sub

Módulo

Public Sub Destacar()
ActiveSheet.Rows.Interior.ColorIndex = 0
ActiveCell.EntireRow.Interior.ColorIndex = 36
End Sub

Preencher Somente Linha.
Código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call Módulo1.Destacar
End Sub

Módulo

Public Sub Destacar()
ActiveSheet.Columns.Interior.ColorIndex = 0
ActiveCell.EntireColumn.Interior.ColorIndex = 36
End Sub

Espero que ajude!

_______________________________________________________________________________________________
Carlos Santos
* Marque o tópico como Resolvido se foi solucionado seu problema.

 
Postado : 06/10/2015 5:28 am
(@marciobin)
Posts: 204
Estimable Member
 

Bom dia ,
tonilanis segue outro modelo que adaptei pra vc .Veja se ajuda.
1 - VC deve selecionar o intervalo que queira que as linhas fique coloridas
2 - va em formatção , depois EM NOVA REGRA E COLE :
=LIN()=CÉL("lin") , EM SEGUIDA FAÇA AS DEVIDAS FORMATAÇOES DE CORES

3 - ALT F11 , E COLE O SEGUINTE NA PLANILHA , OU BOTAO DIREITO E EXIBIR CODIGO , TANTO FAZ . E COLE :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub

VERÁS QUE ASELEÇÃO IRÁ FLUIR PERFEITAMENTE .
SEGUE MODELO.
O LEGAL AI , É QUE VC PODE DETERMINAR O INTERVALO
ESPERO TER AJUDADO

 
Postado : 06/10/2015 7:00 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu particularmente para esse caso preferia fazer com formatação condicional como mencionou o MarcioBin.

Porém há quem goste do VBA.

Tentando resolver esse caso em VBA, segue uma gambiarra:

Option Explicit

Dim Linha           As Long 'Variavel global
Dim Plan1           As Variant
Dim Plan2           As Variant
Dim Status          As String
Const ColunaInicial As Integer = 2
Const ColunaFinal   As Integer = 7

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next

    If Status = "IR1" Then GoTo IR1
    If Status = "IR2" Then GoTo IR2
    Application.ScreenUpdating = False
    
    Plan2 = ThisWorkbook.ActiveSheet.Name
    Status = "IR1"
    ThisWorkbook.Worksheets(Plan1).Activate
IR1:
    ThisWorkbook.Worksheets(Plan1).Range(Cells(Linha, ColunaInicial), Cells(Linha, ColunaFinal)).Interior.ColorIndex = xlNone
    Status = "IR2"
    ThisWorkbook.Worksheets(Plan2).Activate
IR2:
    Application.ScreenUpdating = True
    Status = "IR"
    Exit Sub
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next

    'limpa a cor anterior
    ThisWorkbook.ActiveSheet.Range(Cells(Linha, ColunaInicial), Cells(Linha, ColunaFinal)).Interior.ColorIndex = xlNone
    'Variavel global recebe o nome da planilha atualmente selecionada
    Plan1 = ThisWorkbook.ActiveSheet.Name
    'Variavel global recebe o numero da linha atualmente selecionada
    Linha = ActiveCell.Row
    'Destaca linha atualmente selecionada
    ThisWorkbook.ActiveSheet.Range(Cells(Linha, ColunaInicial), Cells(Linha, ColunaFinal)).Interior.ColorIndex = 6
End Sub

Qualquer coisa da o grito.
Abraço

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

 
Postado : 06/10/2015 8:22 am
(@mprudencio)
Posts: 2749
Famed Member
 

Bernardo me diz uma coisa Como faria isso com FC????????????

Coloca um exemplo pra nos por favor.

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 : 06/10/2015 8:33 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Marcelo, o MarcioBin já postou um exemplo com formatação condicional (acredito... não baixei.)

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

 
Postado : 06/10/2015 8:36 am
(@tonilanis)
Posts: 32
Eminent Member
Topic starter
 

Perfeito. Todas as dicas são funcionais. Obrigado a todos.

 
Postado : 06/10/2015 12:06 pm