macro VBA no excel 2010 32 modo de bits

1

Eu tenho uma planilha de excel que salvou usando o Excel 2010 64 Bit. 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

End Sub

Se eu estou tentando executar o arquivo salvo no Excel 2010, ele quer executar. Alguém pode sugerir o motivo. Obrigado

    
por udaya726 28.11.2013 / 11:20

2 respostas

0

Seus comentários sugerem que este evento específico não está sendo acionado por algum motivo ou que nenhum código está sendo acionado (sei que o Excel pode impedir a execução de código por padrão, às vezes, para isso)

Tente ver se algum código é executado. Você poderia tentar conectar uma macro a um botão para disparar explicitamente o código para ajudá-lo a descobrir se esse é o problema.

    
por 28.11.2013 / 13:41
0

Eu experimentei o Excel 2010 de 32 bits e ele foi executado sem problemas.

Algumas perguntas:

  1. Você desativou o Application.EnableEvents em algum momento do seu código?
  2. Não há End Sub no código que você forneceu, presumo que isso tenha sido perdido na cópia e na colagem para a SU, mas confirme isso.
  3. Alguma coisa será executada no evento worksheet_change?

Além disso, eu faria algumas alterações no seu código para ajudar a gerenciá-lo com mais eficiência. Atualmente toda vez que seu procedimento altera outra célula, ele é executado novamente. Adicionei algumas linhas para desativar os acionadores 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
    
por 03.12.2013 / 22:09