Eu tenho uma planilha do Excel que foi salva usando o Excel 2010 de 64 bits. Tem um código como segue
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 17 Then
Dim iRet As Integer
Dim arr As Variant
If Not IsEmpty(Range("B2").Value2) Then
Exit Sub
End If
'Clear the values in columns
Range("S:AZ").ClearContents
arr = Split(Target, ",")
Range("S15:AZ15").NumberFormat = "@"
Range("S15", Cells(15, UBound(arr) + 19)) = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))
Range("AZ1").Value2 = Target
Worksheets("MasterPage").Range("X3:X1000").ClearContents
Worksheets("MasterPage").Range("X3:X1000").NumberFormat = "@"
Worksheets("MasterPage").Range("X3:X" & UBound(arr) + 3) = WorksheetFunction.Transpose(arr)
End If
Finalizar sub
Se estou tentando executar o arquivo salvo no modo Excel 2010 de 32 bits, ele será executado. Alguém pode sugerir o motivo. Obrigado
Responder1
Seus comentários sugerem que este evento específico não está sendo acionado por algum motivo ou nenhum código está sendo acionado (eu sei que o Excel pode impedir a execução de código por padrão às vezes, então fique atento a isso)
Tente ver se algum código é executado. Você pode tentar conectar uma macro a um botão para disparar explicitamente o código e ajudá-lo a descobrir se esse é o problema.
Responder2
Experimentei no Excel 2010 de 32 bits e funcionou sem problemas.
Algumas questões:
- Você desativou Application.EnableEvents em algum momento do seu código?
- Não há End Sub no código que você forneceu, presumo que isso foi perdido ao copiar e colar no SU, mas verifique novamente.
- Alguma coisa será executada no evento worksheet_change?
Além disso, eu faria algumas alterações em seu código para ajudá-lo a funcionar com mais eficiência. Atualmente toda vez que seu procedimento altera outra célula ele é executado novamente. Adicionei algumas linhas para desligar os gatilhos de eventos e ativá-los novamente para evitar que as coisas sejam executadas várias vezes.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Row = 1 And Target.Column = 17 Then
Dim iRet As Integer
Dim arr As Variant
If Not IsEmpty(Range("B2").Value2) Then
Application.EnableEvents = True
Exit Sub
End If
'Clear the values in columns
Range("S:AZ").ClearContents
arr = Split(Target, ",")
Range("S15:AZ15").NumberFormat = "@"
Range("S15", Cells(15, UBound(arr) + 19)) = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))
Range("AZ1").Value2 = Target
Worksheets("MasterPage").Range("X3:X1000").ClearContents
Worksheets("MasterPage").Range("X3:X1000").NumberFormat = "@"
Worksheets("MasterPage").Range("X3:X" & UBound(arr) + 3) = WorksheetFunction.Transpose(arr)
End If
Application.EnableEvents = True
End Sub