Alteração da folha de trabalho do VBA Função não funciona [fechada]

0

Estou tentando fazer com que uma função de célula seja atualizada toda vez que o usuário alterar um intervalo de células específico, usando V.B.A.

Aqui está o que eu tenho até agora:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R As Range
    Set R = Range("A6").EntireRow
    If Intersect(R, Target) Is Nothing Then Exit Sub
    Application.EnableEvents = False
        R.Cells(7, 4).Value = Date
    Application.EnableEvents = True
End Sub

Isso simplesmente não está funcionando. Eu tenho mexido com isso há algum tempo e não consigo fazê-lo funcionar.

Calcular automaticamente está ativado.

As macros estão ativadas.

Não é um livro de trabalho compartilhado.

Eu coloquei o código na Planilha1 e não no Módulo1.

O que estou fazendo de errado?

    
por Vsquize 20.05.2017 / 12:34

2 respostas

1

Para qualquer pessoa com um problema semelhante, Application.EnableEvents deve ser usado com sabedoria. O que eu suspeito que aconteceu no seu caso foi que você definiu Application.EnableEvents = false em seu código, e então parou a depuração no meio dele ou ele gerou um erro.

Quando isso acontecer, Application.EnableEvents permanecerá false e permanecerá assim até que você o ative via VBA ou reinicie o Excel.

Uma maneira de evitar isso é usar On Error GoTo <Label>: e, em seguida, definir um rótulo no final do seu código para reativar os eventos, garantindo que, se os borks de código, os eventos forem reativados.

On Error GoTo Finally:

<code here>

Finally:
Application.EnableEvents = True
    
por 20.05.2017 / 23:06
0

Como eu entendi, você está tentando mudar os dados do intervalo "D7" para a data atual quando você muda o intervalo "A6", está certo?

Se sim, você pode fazer esse tipo de alteração substituindo todo o código acima por:

Target.Offset(1, 3).Value = Date

Onde Offset está dizendo para descer 1 linha e 3 colunas.

Agora, se você quiser alterar a data da linha atual na coluna "D", faça o seguinte.

Target.Offset(0, 3).Value = Date

E, por favor, não faça nada com:

Application.EnableEvents 
    
por 20.05.2017 / 22:18