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:
- ¿Desactivaste Application.EnableEvents en algún momento de tu código?
- No hay End Sub en el código que proporcionaste, supongo que se perdió al copiar y pegar en SU, pero vuelve a verificarlo.
- ¿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