Jump to content

Ganhe $$$ escrevendo tutoriais para nós!


Foto

Formatação condicional com intervalos

condicional intevalos




  • Faça login para responder
6 respostas neste tópico

#1 nlsouza

nlsouza
  • Participante
  • 4 mensagens

Publicado 11 March 2012 - 08:30 AM

Colegas,
a função abaixo funciona perfeitamente, copiei aqui do fórum.
Mas eu gostaria de trabalhar com intervalos.
Ex. tenho informações que abrangem da célula C3 a C15 e gostaria que quando eu digitasse "X" em qualquer celular desse intervalo a mesma fosse preenchida com a cor de fundo vermelha, e se digita "Y" ficasse na cor de fundo amarelha. Dei exemplo de 2 cores, mas na verdade eu preciso de fazer essa condição mais de 11 vezes (11 cores diferentes).
Tem como fazer isso?
Obrigado!



Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range("B1").Font.ColorIndex = 0

If Range("A1") = "X" And Range("B1") = "Produção" Then
Range("B1").Font.ColorIndex = 4
End If

If Range("A1") = "O" And Range("B1") = "Falta Operador" Then
Range("B1").Font.ColorIndex = 3
End If

If Range("A1") = "Z" And Range("B1") = "Produção" Then
Range("B1").Font.ColorIndex = 6
End If

If Range("A1") = "Z" And Range("B1") = "Falta Operador" Then
Range("B1").Font.ColorIndex = 9
End If

''Verde => 4
''Vermelho => 3
''Amarelo => 6

''marrom=>9
''Preto => 0
End Sub




#2 osvaldomp

osvaldomp
  • Participante
  • 380 mensagens

Publicado 11 March 2012 - 09:49 AM

instale o código no módulo da planilha, assim:
1. copie o código abaixo
2. clique com o direito na guia da planilha
3. escolha 'Exibir Código'
4. cole na janela em branco que se abrirá
5. feito! Alt+Q para retornar para a plnilha e testar

altere no código as letras e as cores conforme desejar

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("C3:C15")) Is Nothing Then
  Select Case Target.Value
	Case "A": Target.Interior.ColorIndex = 1
	Case "B": Target.Interior.ColorIndex = 20
	Case "C": Target.Interior.ColorIndex = 3
	Case "D": Target.Interior.ColorIndex = 4
	Case "E": Target.Interior.ColorIndex = 5
	Case "F": Target.Interior.ColorIndex = 6
	Case "G": Target.Interior.ColorIndex = 7
	Case "H": Target.Interior.ColorIndex = 8
	Case "I": Target.Interior.ColorIndex = 9
	Case "J": Target.Interior.ColorIndex = 10
	Case "K": Target.Interior.ColorIndex = 11
	Case "L": Target.Interior.ColorIndex = 12
	Case "M": Target.Interior.ColorIndex = 13
	Case Else: Target.Interior.ColorIndex = xlNone
  End Select
End If
End Sub
Osvaldo

#3 osvaldomp

osvaldomp
  • Participante
  • 380 mensagens

Publicado 11 March 2012 - 12:07 PM

ou

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("C3:C15")) Is Nothing Then
	With Target.Interior
	  Select Case Target.Value
		Case "A": .ColorIndex = 1
		Case "B": .ColorIndex = 20
		Case "C": .ColorIndex = 3
		Case "D": .ColorIndex = 4
		Case "E": .ColorIndex = 5
		Case "F": .ColorIndex = 6
		Case "G": .ColorIndex = 7
		Case "H": .ColorIndex = 8
		Case "I": .ColorIndex = 9
		Case "J": .ColorIndex = 10
		Case "K": .ColorIndex = 11
		Case "L": .ColorIndex = 12
		Case "M": .ColorIndex = 13
		Case Else: .ColorIndex = xlNone
	End Select
  End With
End If
End Sub
Osvaldo

#4 nlsouza

nlsouza
  • Participante
  • 4 mensagens

Publicado 11 March 2012 - 01:43 PM

Caro Osvaldo,
primeiro obrigado pela ajuda.
Fiz o que orientou, colei o codigo, salvei, e voltei na planilha.
Na celula C8 digitei a letra J e nada aconteceu, ficou em branco. Era para aparecer a cor numero 10.
Tem alguma coisa errada?
Obrigado

#5 osvaldomp

osvaldomp
  • Participante
  • 380 mensagens

Publicado 11 March 2012 - 02:29 PM

Aê, Souza.
Desculpe, provavelm// você digitou 'j' e o código só reconhece 'J', maiúscula, como estão os exemplos no seu post #1.
Por favor altere conforme abaixo para o código reconhecer as minúsculas também.

Case "A", "a": .ColorIndex = 1
Case "B", "b": .ColorIndex = 20
Case "C", "c": .ColorIndex = 3
...
...
Case "M", "m": .ColorIndex = 13
Case Else: .ColorIndex = xlNone
Osvaldo

#6 nlsouza

nlsouza
  • Participante
  • 4 mensagens

Publicado 11 March 2012 - 03:44 PM

Ótimo, funcionou perfeitamente.
Obrigado!

Editado por nlsouza, 11 March 2012 - 03:46 PM.
''


#7 osvaldomp

osvaldomp
  • Participante
  • 380 mensagens

Publicado 11 March 2012 - 04:00 PM

para estender o intervalo de atuação acrescente a parte em vermelho:
If Not Intersect(Target, Range("C3:C15,C45:C60")) Is Nothing Then
Osvaldo






Tópicos Relacionados Collapse





Ganhe $$$ escrevendo tutoriais para nós!