Notifications
Clear all

Preencher Linha Selecionada

4 Posts
3 Usuários
0 Reactions
1,363 Visualizações
(@marciobin)
Posts: 204
Estimable Member
Topic starter
 

Bom dia ,
Em busca pelo forum , encontrei algo parecido , porem não exatamente ...

Seguinte : Uso como formatção condicional para preencher a linha selecionada o seguinte : =LIN()=CÉL("lin") , mais para que o preenchimento seja feito preciso ir no vba e acrescentar na planilha o seguinte codigo :

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

Porém , quando a planilha vai ficando pesada , quando seleciono a linha , o excel começa a calcular , fica processando .
e o codigo bloqueia COPIAR E COLAR .

2- Gostaria que selecionasse somente linha que tivesse preenchida com alguma coisa , pois o interessante é a colorir somente as que estao preenchidas .

Segue modelo .
Não sei se ficou claro a explicação acima

Obrigado ...

 
Postado : 04/05/2018 10:33 pm
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Bom dia..
Não entendi.

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 05/05/2018 4:30 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Método 1.

Sua planilha fica lenta porque você está calculando ela inteira e não há necessidade disso para o seu objetivo. Ao invés disso calcule apenas a Target. Assim:
Altere sua fórmula por essa:

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

Além disso, mude sua fórmula da condicional para essa: (Isso resolve o problema de pintar quando a célula é vazia)

=E(LIN()=CÉL("lin");CÉL("conteúdo")<>"")

OU TENTE ESSE OUTRO MÉTODO....

Método 2:

Apague sua formatação condicional e troque seu código por esse:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ul As Long
ul = Plan1.Range("D" & Rows.Count).End(xlUp).Row
If Target.Column = 4 And Target.Cells.Count = 1 And IsEmpty(Target) Then
Plan1.Range("D1:P" & ul).Interior.ColorIndex = 0
End If
If Target.Column = 4 And Target.Cells.Count = 1 And Not IsEmpty(Target) Then
Plan1.Range("D1:P" & ul).Interior.ColorIndex = 0
Plan1.Range("D" & Target.Row & ":" & "P" & Target.Row).Interior.ColorIndex = 36
End If
End Sub

Segue anexo do método 2:

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 05/05/2018 8:11 am
(@marciobin)
Posts: 204
Estimable Member
Topic starter
 

xlarruda,
Muito obrigado !
Os tipos muito bom , pois do jeito que eu tava fazendo a planilha ficava travando (CALCULANDO) .
Vou ver qual vou usar aqui agora .
vlew,,,,

 
Postado : 05/05/2018 3:31 pm