Mas detectei, que preciso que este script rode somente após o comando de um botão. Como posso fazer para este script rodar somente desta forma e não automaticamente.

Anônima
2024-11-11T05:06:54+00:00

Dividir deste tópico.

Boa tarde Aiden, tudo bem.

Estou novamente precisando sua ajuda.

Você me enviou o script nas mensagens acima e ele funcionou perfeitamente.

Mas detectei, que preciso que este script rode somente após o comando de um botão. Como posso fazer para este script rodar somente desta forma e não automaticamente.

Muito obrigado.

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

3 respostas

Classificar por: Mais útil
  1. Anônima
    2024-11-12T05:53:58+00:00

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

    Olá, Fausto Coutinho

    Dependendo do seu código, você precisará adicionar uma linha de código para garantir que o valor antigo seja armazenado na linha 5, independentemente de o novo valor ter sido alterado ou não. A solução é copiar o valor antigo diretamente para a linha 5 antes do loop:

    newValues = Me.Range("B6:EL6").Value
    
    Me.Range("B5:EL5").Value = oldValues  
    
    For i = 1 To UBound(newValues, 2)
    

    Espero que as informações acima possam ajudá-lo. Sinta-se à vontade para enviar uma mensagem se precisar de mais ajuda.

    Felicidades

    Aiden.C - MSFT |Especialista em suporte da comunidade Microsoft

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2024-11-11T21:48:05+00:00

    Olá, Aiden.

    Estou usando o script abaixo e funcionou perfeitamente. Agora altero os valores acionando o botão.

    Sub MacroName()

    Static oldValues As Variant 
    
    Dim newValues As Variant 
    
    Dim i As Integer 
    
    If IsEmpty(oldValues) Then 
    
        oldValues = Me.Range("B6:EL6").Value 
    
    End If 
    
    newValues = Me.Range("B6:EL6").Value 
    
    For i = 1 To UBound(newValues, 2) 
    
        If newValues(1, i) <> oldValues(1, i) Then 
    
            Me.Cells(5, 1 + i).Value = oldValues(1, i) 
    
            oldValues(1, i) = newValues(1, i) 
    
        End If 
    
    Next i 
    

    End Sub

    Somente detectei um problema que não havia percebido quando a atualização estava sendo feita automaticamente.

    Quando o novo valor (new value) na linha 6 é igual ao valor antigo (old value) que estava na linha 6 o old value não é transferido e armazenado na linha 5.

    Será que poderia **** olhada no script e me enviar uma atualização para resolver este problema?

    Mais uma vez, muito obrigado pela ajuda.

    Abs.

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2024-11-11T05:35:39+00:00

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

    Olá, Fausto Coutinho

    Obrigado por usar os produtos da Microsoft e publicá-los na comunidade.

    Abra o editor VBA do Excel (pressione Alt + F11).

    No editor VBA, insira um novo módulo (clique com o botão direito do mouse em qualquer módulo existente e selecione "Inserir" -> "Módulo").

    Cole o código no novo módulo e altere o nome da sub-rotina para um nome mais genérico, como UpdateValues.

    Sub UpdateValues()
        Static oldValues As Variant
        Dim newValues As Variant
        Dim i As Integer
    
        If IsEmpty(oldValues) Then
            oldValues = ThisWorkbook.Sheets("Sheet1").Range("C5:F5").Value
        End If
    
        newValues = ThisWorkbook.Sheets("Sheet1").Range("C5:F5").Value
    
        For i = 1 To UBound(newValues, 2)
            If newValues(1, i) <> oldValues(1, i) Then
                ThisWorkbook.Sheets("Sheet1").Cells(4, 2 + i).Value = oldValues(1, i)
                oldValues(1, i) = newValues(1, i)
            End If
        Next i
    End Sub
    

    Feche o editor VBA.

    Pressione Alt + F8, selecione UpdateValues na caixa de diálogo de macro que aparece e clique em Executar.

    Se o problema for resolvido, marque "Sim" para esta resposta é obrigado por sua cooperação.

    Espero que as informações acima possam ajudá-lo. Sinta-se à vontade para enviar uma mensagem se precisar de mais ajuda.

    Felicidades

    Aiden.C - MSFT |Especialista em suporte da comunidade Microsoft

    Esta resposta foi útil?

    0 comentários Sem comentários