Me gustaría invertir mi selección con AppleScript. Esto es análogo a la funcionalidad de Adobe Photoshop (y otros productos de Adobe) "Invertir selección (Ctrl / Cmd + I para anular la selección de lo que se seleccionó previamente y seleccionar lo que no se seleccionó)"
- Yo puedo seleccionar un grupo de células con AppleScript.
- Yo puedo ser seleccionado gama con AppleScript
- I puedo bucle de células seleccionado
- Me gustaría seleccionar todas las celdas que no están seleccionados actualmente
Código
tell application "Microsoft Excel"
repeat with item_cell from 1 to count large of selection -- all cells in selection
--do stuff with selected cells
end repeat
-- index of selected cells technique, not sure whether helpful
set sel_range to selection
tell selection to set {rowIndex, columnIndex, rowCount, columnCount} to {get first row index of sel_range, get first column index of sel_range, get count rows of sel_range, get count columns of sel_range}
end tell
Celdas seleccionadas originalmente
Selección deseada
(Se seleccionan todas las celdas de la hoja que no se seleccionaron originalmente)
applescript
ms-office
script
Jonathan Komar
fuente
fuente
H18
, o en el pasadoH20
¿Qué tal?A200
?ZZ999
?XFD1048576
?)Respuestas:
Finalmente tengo una solución. Muchas gracias a Monomeeth por la versión VBA que me puso en el camino correcto. (Y haciendo posible hacer esto también en Windows)
Funciona de manera similar a la versión de Monomeeth. Tiene un rango considerado por razones de rendimiento. Configúrelo cambiando esta línea en consecuencia:
set range_considered to range "A1:Z100" of active sheet
Aquí está:
fuente
He estado trabajando en esta pregunta durante un tiempo y, golpeando una pared de ladrillos, decidí intentar que funcionara con Visual Basic. Espero que hacer esto haga que sea más fácil obtener el código correcto dentro de AppleScript, así que comparto el código de Visual Basic en caso de que ayude a alguien más a tener una versión de AppleScript funcionando, no es que yo mismo haya renunciado a esto. ¡todavía! :)
NOTAS
Set s2 = Range("A1:Z100")
limitar el área de la hoja a la que se aplica el código al rango de A1: Z100. Sin embargo, esto se puede cambiar para adaptarse a un área más grande si es necesario.fuente