Página 1 de 1

Pintar uma coluna selecionando uma celula

Enviado: 01 Mar 2017 às 19:56
por JCabral
Boa noite

Precisava de uma ajuda, para pintar uma coluna entre determinado range, após selecionar a célula no topo.

É possível fazer isso em VBA?

Anexo planilha explicativa do que se pretende. Obrigado

Pintar uma coluna selecionando uma celula

Enviado: 01 Mar 2017 às 21:45
por ReiSilva
@JCabral,
Fiz uma brincadeira rápida aqui para você ver mais ou menos a dinâmica.
A partir disso você consegue adaptar exatamente ao que você quer...

A sacada está no "Workbook_SheetSelectionChange", ou seja, quando você seleciona uma célula, você dispara essa macro (tem outras opções, para só funcionar, por exemplo, com duplo clique)..

O restante é simples, aplicando algumas condicionais "If"...

Olha com calma, que tenho certeza que conseguirá fazer essas e outras ideias suas.
Abs!

=================================================================================

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

Application.ScreenUpdating = False


'linha onde foi dado o clique
linha = ActiveCell.Row
coluna = ActiveCell.Column

'testa so o clique ocorreu dentro do intervalo de linhas esperado, no caso, entre 6 e 14
If (linha >= 6 And linha <= 14) Then

'caso seja no intervalo, testa se o clique foi feito na coluna "S"
'cada coluna é representada por um nº... ex a = 1, b =2...etc

If ActiveCell.Column = 19 Then
Pintar_celula
Range("X" & linha).Select
Despintar_celula
Range("q5").Select
Else

'teste se o clique ocorreu na coluna "X"
If ActiveCell.Column = 24 Then
Pintar_celula
Range("S" & linha).Select
Despintar_celula
Range("q5").Select
End If
End If
End If

Application.ScreenUpdating = True


End Sub


Sub Pintar_celula()

ActiveCell.Select

'Aqui é a cor escolhida
With Selection.Interior
.Pattern = xlGray50
.PatternThemeColor = xlThemeColorDark1
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub

Sub Despintar_celula()

ActiveCell.Select

'Retira a cor ... opção Sem preenchimento
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub

Re: Pintar uma coluna selecionando uma celula

Enviado: 01 Mar 2017 às 21:51
por osvaldomp
Olá, Cabral.
O código abaixo deve ser instalado no módulo da planilha de interesse e irá executar ao selecionar uma ou mais células no intervalo "C5:N5".
Código: Selecionar todos
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Range("C6:N14").Interior.ColorIndex = xlNone
  If Intersect(Range("C5:N5"), Target) Is Nothing Then Exit Sub
  Range(Target.Offset(1), Target.Offset(9)).Interior.ColorIndex = 40
End Sub

Re: Pintar uma coluna selecionando uma celula

Enviado: 01 Mar 2017 às 22:53
por JCabral
ReiSilva

Por culpa minha te induzi em erro o que pretendia era que selecionando em qualquer célula de Q5 a AB5 ou C5 a N5 ele me pintasse toda a coluna ou seja se eu selecionar a célula D5 fica tudo pintado entre D5 e D14 neste caso.
Muito obrigado pela sua sugestão.

A solução pretendida é mais a que o osvaldomp apresentou

Abraço
Jorge Cabral

Re: Pintar uma coluna selecionando uma celula

Enviado: 01 Mar 2017 às 22:57
por JCabral
osvaldomp escreveu:Olá, Cabral.
O código abaixo deve ser instalado no módulo da planilha de interesse e irá executar ao selecionar uma ou mais células no intervalo "C5:N5".
Código: Selecionar todos
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Range("C6:N14").Interior.ColorIndex = xlNone
  If Intersect(Range("C5:N5"), Target) Is Nothing Then Exit Sub
  Range(Target.Offset(1), Target.Offset(9)).Interior.ColorIndex = 40
End Sub
Osvaldo

Era mesmo isso que pretendia, contudo tem um só pequeno (ou grande) pormenor que não falei e não sei se é possível de resolver com VBA , ou seja se as linhas e colunas já tiverem uma formatação, vamos supor linha sim, linha não elas têm uma cor, como se fosse uma tabela dinâmica, é possível manter essa formatação depois de eu selecionar uma coluna para pintar?

Obrigado
Jorge Cabral

Pintar uma coluna selecionando uma celula

Enviado: 01 Mar 2017 às 23:26
por osvaldomp
Disponibilize uma amostra da sua planilha EXATAMENTE igual à original.

Re: Pintar uma coluna selecionando uma celula

Enviado: 02 Mar 2017 às 20:22
por JCabral
Boa noite Osvaldo

Desculpe só responder agora, mas aqui vai a planilha com a formatação que eu gostaria de ver preservada.

Obrigado
Jorge Cabral

Re: Pintar uma coluna selecionando uma celula

Enviado: 02 Mar 2017 às 20:58
por osvaldomp
Olá, Cabral.

Veja se a solução que está no arquivo anexado atende.

Re: Pintar uma coluna selecionando uma celula

Enviado: 02 Mar 2017 às 21:24
por JCabral
Osvaldo

Com formatação condicional tinha esta solução, a única diferença é que mesmo selecionando fora da linha 6 ele pinta a coluna correspondente.

Só com VBA é possível? Talvez com uma shape?

Obrigado

Re: Pintar uma coluna selecionando uma celula

Enviado: 06 Mar 2017 às 13:35
por osvaldomp
JCabral escreveu:Com formatação condicional tinha esta solução, ...Só com VBA é possível?
Se ainda não resolveu experimente o código abaixo (trabalha só com a macro, sem FC)
Código: Selecionar todos
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim r As Long
  Application.ScreenUpdating = False
   Range("D12:BK61").Interior.ColorIndex = xlNone
    For r = 12 To 60 Step 2
     Cells(r, 4).Resize(, 60).Interior.ColorIndex = 15
    Next r
   If Intersect(Range("D11:BK11"), Target) Is Nothing Then Exit Sub
   Range(Target.Offset(1), Target.Offset(50)).Interior.ColorIndex = 3 '40
  Application.ScreenUpdating = True
End Sub

Pintar uma coluna selecionando uma celula

Enviado: 17 Mar 2017 às 12:30
por JCabral
Obrigado Osvaldo.