DESTACAR LINHA SELECIONADA MUDANDO A COR DE FUNDO

PABLOMOREIRAGV 28/09/2010 18:08:00
#354040
Saudaçoes,

Encontrei este código na net, que é muito interessante e preciso da ajuda dos copanheiros para fazer algumas modificacoes que se julgam necessárias para mim e creio que para outras pessoas também. O problema é o seguinte: ao selecionar qualquer linha de uma planilha destaca-se com uma cor, só que náo se pode colorir nenhuma linha com outra cor porque o código naum deixa e outro problema é que quando o documento é salvo e aberto novamente, nota-se que fica uma linha colorida referente a selecao que foi feita antes do último salvamento ficando assim duas linhas coloridas. Só quando se clica em cima da linha com cor de fundo que ela fica sem cor novamente, aliás ela tira a cor de qualquer linha colorida da planilha menos as desejadas. E seria legal que depois das modificacoes observadas acima todas as linhas selecionadas ficassem coloridas também. Acho que é só..rs..rs.rs..... tem alguém que pode consertar este código que será de grande ajuda para mim e como já disse, creio que muita gente vai gostar também. Desde já agradeco aos amigos.

Segue:

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 = 36

[ô]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
PABLOMOREIRAGV 29/09/2010 11:14:16
#354105
Alguém sabe modificar o código acima?
XXXANGELSXXX 29/09/2010 11:24:28
#354107
Não entendi direito o que vc esta querendo.. vc quer destacar a linha selecionada?
PABLOMOREIRAGV 29/09/2010 12:14:11
#354120
XXXANGELSXXX,

Essa é a função do código acima, como já expliquei anteriormente, queria modifica-lo conforme informado na primeira pergunta.
XXXANGELSXXX 29/09/2010 12:55:03
#354129
Continuo nao entendendo.. mas vou enviar o codigo que utilizo, e nao da problema, ou seja, apenas a linha que esta sendo movimentada que é marcada..
sub PreencheGrid
Set MyRs = New ADODB.Recordset
MyRs.Open [Ô]Select id,cadcat,cadnome,cadendereco,cadnumero,cadbairro,cadcidade,cadcomplemento,cadfantasia,cadcep,caduf,cadcatativo from cadcat[Ô], Conexao, adOpenStatic, adLockReadOnly
If MyRs.RecordCount > 0 Then
With TDbgrid1
Set .DataSource = MyRs
.Cols = 13
[ô]Aqui ele faz o trabalho de selecionar apenas a linha.
 
.SelectionMode = 1 - byrow


.TextMatrix(0, 0) = [Ô][Ô]: .ColWidth(0) = 0
.TextMatrix(0, 1) = [Ô]Cód.[Ô]: .ColWidth(1) = 1000
.TextMatrix(0, 2) = [Ô]CAT[Ô]: .ColWidth(2) = 1000
.TextMatrix(0, 3) = [Ô]Razão Social[Ô]: .ColWidth(3) = 8000
.TextMatrix(0, 4) = [Ô]Cidade[Ô]: .ColWidth(4) = 4000
.TextMatrix(0, 5) = [Ô]Estado[Ô]: .ColWidth(5) = 800
.TextMatrix(0, 6) = [Ô][Ô]: .ColWidth(6) = 0: .TextMatrix(0, 7) = [Ô][Ô]: .ColWidth(7) = 0
.TextMatrix(0, 8) = [Ô][Ô]: .ColWidth(8) = 0: .TextMatrix(0, 9) = [Ô][Ô]: .ColWidth(9) = 0
.TextMatrix(0, 10) = [Ô][Ô]: .ColWidth(10) = 0: .TextMatrix(0, 11) = [Ô][Ô]: .ColWidth(11) = 0
.TextMatrix(0, 12) = [Ô][Ô]: .ColWidth(12) = 0
.Rows = MyRs.RecordCount + 1
For i = 1 To MyRs.RecordCount
.TextMatrix(i, 0) = IIf(IsNull(MyRs!id), [Ô][Ô], MyRs!id)
.TextMatrix(i, 1) = IIf(IsNull(MyRs!id), [Ô][Ô], Format(MyRs!id, [Ô]0000[Ô]))
.TextMatrix(i, 2) = IIf(IsNull(MyRs!cadcat), [Ô][Ô], MyRs!cadcat)
.TextMatrix(i, 3) = IIf(IsNull(MyRs!cadnome), [Ô][Ô], MyRs!cadnome)
.TextMatrix(i, 4) = IIf(IsNull(MyRs!cadcidade), [Ô][Ô], MyRs!cadcidade)
.TextMatrix(i, 5) = IIf(IsNull(MyRs!caduf), [Ô][Ô], MyRs!caduf)
.TextMatrix(i, 6) = IIf(IsNull(MyRs!cadendereco), [Ô][Ô], MyRs!cadendereco)
.TextMatrix(i, 7) = IIf(IsNull(MyRs!cadnumero), [Ô][Ô], MyRs!cadnumero)
.TextMatrix(i, 8) = IIf(IsNull(MyRs!cadbairro), [Ô][Ô], MyRs!cadbairro)
.TextMatrix(i, 9) = IIf(IsNull(MyRs!cadcomplemento), [Ô][Ô], MyRs!cadcomplemento)
.TextMatrix(i, 10) = IIf(IsNull(MyRs!cadfantasia), [Ô][Ô], MyRs!cadfantasia)
.TextMatrix(i, 11) = IIf(IsNull(MyRs!cadcep), [Ô][Ô], MyRs!cadcep)
.TextMatrix(i, 12) = IIf(IsNull(MyRs!cadcatativo), [Ô][Ô], MyRs!cadcatativo)
MyRs.MoveNext
Next i
End With
TDbgrid1.Row = 1
TDbgrid1.Col = 0
Else
TDbgrid1.Clear
End If
MyRs.Close
Set MyRs = Nothing
PABLOMOREIRAGV 29/09/2010 13:23:02
#354132
XXXANGELSXXX,

Agora quem não entedeu foi eu rs..rs..rs.rs....se possível dê uma olhada na pergunta com calma e teste o código que postei fazendo os testes de salvamento da planiilha com uma linha selecionada e tente colorir alguma linha que você vai ver como funciona. Me desculpe mas não entendi o código que você postou, não sei muito de VBA, mas gostaria de ter a compreensão dos amigos.

Obrigado
PABLOMOREIRAGV 15/10/2010 15:33:53
#355175
Alguém pode me ajudar?
Tópico encerrado , respostas não são mais permitidas