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 todosPrivate 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 todosPrivate 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 todosPrivate 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.