Macro de VBA en modo Excel 2010 de 32 bits

Macro de VBA en modo Excel 2010 de 32 bits

Tengo una hoja de Excel que guardé con Excel 2010 de 64 bits. Tiene un codigo como sigue

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

Subtítulo final

Si estoy intentando ejecutar el archivo guardado en el modo Excel 2010 de 32 bits, quiero ejecutarlo. ¿Alguien puede sugerir el motivo? Gracias

Respuesta1

Sus comentarios sugieren que este evento específico no se activa por algún motivo o que no se activa ningún código (sé que Excel puede evitar la ejecución de código de forma predeterminada a veces, así que esté atento a eso)

Intente ver si se ejecuta algún código. Podrías intentar conectar una macro a un botón para activar explícitamente el código y ayudarte a determinar si ese es el problema.

Respuesta2

Probé Excel 2010 de 32 bits y funcionó sin problemas.

Unas cuantas preguntas:

  1. ¿Desactivaste Application.EnableEvents en algún momento de tu código?
  2. No hay End Sub en el código que proporcionaste, supongo que se perdió al copiar y pegar en SU, pero vuelve a verificarlo.
  3. ¿Se ejecutará algo en el evento worksheet_change?

Además, haría algunos cambios en su código para ayudarlo a ejecutarse de manera más eficiente. Actualmente, cada vez que su procedimiento cambia otra celda, se ejecuta nuevamente. Agregué algunas líneas para desactivar los activadores de eventos y volver a activarlos para evitar que las cosas se ejecuten varias veces.

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

información relacionada