Posição do cursor pode definir conteúdo de uma célula específica?

Anônima
2025-01-10T13:56:27+00:00

Preciso conhecer um jeito de fazer com que uma determinada célula fixa (A1, por exemplo), tenha seu conteúdo modificado quando coloco o cursor em alguma outra célula da planilha.
Esse conteúdo faria parte de uma lista fixa, pre-determinada.
Digamos, os meses do ano.
Quero que a célula mostre o valor "Janeiro" se o cursor estiver nas primeiras 5 linhas da planilha; que mostre "Fevereiro" quando o cursor estiver nas linhas 6~10; "Março" quando estiver nas linhas 11~15...

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2025-01-17T05:53:19+00:00

Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

Oi

Já faz um tempo desde a última vez que ouvimos falar de você. Você já teve a chance de experimentar o script atualizado? Percebi que você marcou minha resposta anterior como "Não é útil". Se você tiver outras dúvidas ou quiser compartilhar mais contexto comigo, estou aqui para continuar ajudando.

Esta resposta foi útil?

1 pessoa achou esta resposta útil.
0 comentários Sem comentários

6 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2025-01-15T12:19:01+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Olá Paulo,

    Eu entendo suas necessidades agora. O script atualizado é o seguinte:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
        Dim listSheet As Worksheet
    
        Dim currentSheet As Worksheet
    
        Dim monthIndex As Integer
    
        Set listSheet = ThisWorkbook.Sheets("List") ' Supondo que os nomes dos meses est?o na coluna A da planilha "List"
    
        Set currentSheet = ThisWorkbook.ActiveSheet
    
        If Target.Cells.count = 1 And Target.Row >= 5 And Target.Value <>; "" Then
    
            Select Case Target.Row
    
                Case 5 To 11: monthIndex = 1
    
                Case 12 To 17: monthIndex = 2
    
                Case 18 To 23: monthIndex = 3
    
                Case 24 To 29: monthIndex = 4
    
                Case 30 To 35: monthIndex = 5
    
                Case 36 To 41: monthIndex = 6
    
                Case 42 To 47: monthIndex = 7
    
                Case 48 To 53: monthIndex = 8
    
                Case 54 To 59: monthIndex = 9
    
                Case 60 To 65: monthIndex = 10
    
                Case 66 To 71: monthIndex = 11
    
                Case 72 To 77: monthIndex = 12
    
                Case Else: Exit Sub
    
            End Select
    
            currentSheet.Range("C2").Value = listSheet.Cells(monthIndex, 1).Value
    
        End If
    
    End Sub
    

    O método para implantar o script é o mesmo que mencionei na minha resposta anterior. Você só precisa substituir o código pela versão atualizada.

    Para testes e demonstrações:

    Na planilha ativa no momento, clicar em qualquer célula em branco não alterará o conteúdo da célula C2.

    Imagem

    Clicar nas células acima da linha 5 também não alterará o conteúdo da célula C2.

    Imagem

    Somente quando você clicar em uma célula com conteúdo da linha 5 em diante, o mês será exibido na célula C2 com base no conteúdo da planilha "Lista".

    Imagem

    Espero que isso seja útil para você. Tenha um bom dia!

    Thomas

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2025-01-13T18:19:34+00:00

    Caro Thomas C., obrigado por sua instrução.
    Eu tinha quase certeza de que o caminho seria o VBA, que é uma ferramenta que ainda não domino.

    Mas, apesar de verificar que ela funciona, não é exatamente o que eu preciso, e vou tentar explicar melhor:
    As primeiras 4 linhas da minha planilha são de cabeçalho (e serão congeladas), e os dados da tabela começam, efetivamente, na linha 5.

    A célula C2 é aquela na qual eu quero que o mês seja informado.

    As linhas 5 ~11 são referentes a janeiro; 12~17 a fevereiro; 18~23 a março...

    O cursor poderá navegar por qualquer célula da tabela (e essa célula já tem seu conteúdo), e eu preciso que C2 mostre o mês correspondente à linha na qual o cursor está.

    Obrigado, mais uma vez.

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2025-01-13T18:19:25+00:00

    Caro Thomas C., obrigado por sua instrução.
    Eu tinha quase certeza de que o caminho seria o VBA, que é uma ferramenta que ainda não domino.

    Mas, apesar de verificar que ela funciona, não é exatamente o que eu preciso, e vou tentar explicar melhor:
    As primeiras 4 linhas da minha planilha são de cabeçalho (e serão congeladas), e os dados da tabela começam, efetivamente, na linha 5.

    A célula C2 é aquela na qual eu quero que o mês seja informado.

    As linhas 5 ~11 são referentes a janeiro; 12~17 a fevereiro; 18~23 a março...

    O cursor poderá navegar por qualquer célula da tabela (e essa célula já tem seu conteúdo), e eu preciso que C2 mostre o mês correspondente à linha na qual o cursor está.

    Obrigado, mais uma vez.

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2025-01-12T07:33:03+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Olá Paulo Simon - marQ, 

    Bem-vindo à Comunidade da Microsoft. 

    O Excel não oferece suporte nativo à personalização do comportamento do cursor da maneira que você está descrevendo, o que acredito que você entenda. Portanto, para alcançar essa funcionalidade, é necessária a programação, especificamente escrevendo scripts de código VBA que assumem o controle do comportamento do cursor.

    Prepare sua lista fixa e pré-preparada em uma planilha separada; aqui vou chamá-lo de "Lista" (você pode personalizar e modificar o nome desta planilha como quiser, apenas certifique-se de atualizar o nome da planilha no código de acordo). A planilha Planilha1 é onde você deseja controlar o comportamento do cursor.

    Imagem

    Clique com o botão direito do mouse na Planilha1 > Exibir código

    Imagem

    No editor VBA, copie o código a seguir e cole-o na área de edição de código.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
        Dim listSheet As Worksheet
    
        Dim currentSheet As Worksheet
    
        Dim monthIndex As Integer
    
        Set listSheet = ThisWorkbook.Sheets("List")  'Altere o nome da lista fixa e pré-preparada aqui.
    
        Set currentSheet = ThisWorkbook.ActiveSheet
    
        If Target.Cells.count = 1 And Not Intersect(Target, Me.Columns("A")) Is Nothing Then
    
            Select Case Target.Row
    
                Case 1 To 5: monthIndex = 1
    
                Case 6 To 10: monthIndex = 2
    
                Case 11 To 15: monthIndex = 3
    
                Case 16 To 20: monthIndex = 4
    
                Case 21 To 25: monthIndex = 5
    
                Case 26 To 30: monthIndex = 6
    
                Case 31 To 35: monthIndex = 7
    
                Case 36 To 40: monthIndex = 8
    
                Case 41 To 45: monthIndex = 9
    
                Case 46 To 50: monthIndex = 10
    
                Case 51 To 55: monthIndex = 11
    
                Case 56 To 60: monthIndex = 12
    
                Case Else: Exit Sub
    
            End Select
    
            Target.Value = listSheet.Cells(monthIndex, 1).Value
    
        End If
    
    End Sub
    

    Imagem

    Pressione CTRL+S para salvar a pasta de trabalho como uma pasta de trabalho habilitada para macro do Excel.

    Ao retornar à Planilha1, você observará que sempre que o cursor selecionar uma célula na coluna A, seu valor mudará para o valor correspondente da planilha Lista.

    Imagem

    Espero que a macro funcione para você também. Se você tiver outras dúvidas ou quiser compartilhar mais contexto, por favor me avise em sua resposta! 

    Atenciosamente  

    Thomas C - MSFT | Especialista em  suporte da comunidade Microsoft

    Esta resposta foi útil?

    0 comentários Sem comentários