Você pode fazer o Excel alterar a cor de outra célula quando esta célula é clicada?

2

Eu tentei o Googeling, mas não encontrei respostas ... muito frustradas.

Estou tentando fazer isso no Excel:

  1. Selecione as células B1 - B5 (ou apenas B1)
  2. A célula selecionada A1 (que é de cor amarela)
  3. Células B1 - B5 (ou apenas B1 se apenas B1 selecionado) também se tornam amarelas.

Isto é para uma folha de cálculo de folhas (férias) e existem cores diferentes para fins de licença diferentes (por exemplo, doença, férias, meio dia, etc.). Toda vez que alguém destaca as células no calendário da planilha, basta clicar na cor correspondente para colorir as células selecionadas. Eu estou tentando replicar esse mesmo comportamento.

Isso foi feito por alguém para a planilha de excel do nosso escritório, mas não consigo entrar em contato com a pessoa original que fez. Estou tentando duplicar essa função em uma nova planilha do excel.

Como faço isso? Macro Roteiro VB?

    
por FrustratedExcelUser 10.02.2017 / 05:14

2 respostas

0

Você só pode fazer isso por meio do VBA. Aqui está algum código que você pode colocar no objeto Sheet.

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = Range("A1").Address Then
        If Not lastRange Is Nothing Then
            lastRange.Interior.Color = Range("A1").Interior.Color
        End If
    Else
       Set lastRange = Target
    End If
End Sub

O objeto lastRange é salvo da seleção para a seleção. Essa é a única maneira de o VBA lembrar qual intervalo queremos destacar. Sempre que você alterar a seleção, ela define essa seleção como lastRange a menos que seja A1 . Nesse caso, ela colore a seleção anterior como qualquer cor A1 .

Com base nos seus comentários, sua necessidade é um pouco mais ampla do que isso. Como você deseja um intervalo de células de várias cores, esse provavelmente é o código que você deseja:

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then
        If Not Intersect(Target, Range("A1:A5")) Is Nothing Then
            If Not lastRange Is Nothing Then
                lastRange.Interior.Color = Target.Interior.Color
                Exit Sub
            End If
        End If
    End If
    Set lastRange = Target
End Sub

Agora há todo um intervalo de células A1:A5 que pode ser de cores diferentes. Se você selecionar uma única célula nesse intervalo, ela definirá a seleção anterior como a mesma cor da célula atual. Você pode ajustar o intervalo A1:A5 para ser o que precisar.

Isso tem uma peculiaridade que eu conheço: Se você selecionar um intervalo, uma forma e, em seguida, A1 , o intervalo selecionado anteriormente ainda será armazenado como lastRange . Isso provavelmente é OK, mas eu não sei o seu caso de uso.

    
por 10.02.2017 / 14:15
0

Abra o arquivo do Excel e, na guia HOME , vá para Formatação condicional e clique em Gerenciar regras. Você deve conseguir ver uma regra relacionada às células mencionadas na sua pergunta.

Verifique o link abaixo da Microsoft para mais informações:

< p < = e; usar formatação condicional

    
por 10.02.2017 / 07:40