viernes, 11 de diciembre de 2009

Referencias relativas en el Asistente para Macros.

En ocasiones cuando utilizamos el 'Asistente para Macros' para Grabar Macros sencillas, que requieran sólo de una secuencia de acciones, nos hemos dado cuenta de la importancia de marcar o no la opción de Usar referencias relativas, y ésto funciona igual en las versiones Excel 2003 y Excel 2007.
Pongamos por ejemplo que deseamos grabar una macro que de color al fondo de la celda que tenga activa en ese momento. Si accedo al Asistente para Macros y Grabo mi macro sin seleccionar 'Usar referencias relativas' el resultado es este:


Sub Color_fondo()
'
' Color_fondo Macro
' Da color amarillo al fondo de la celda C4
'
' Acceso directo: CTRL+h
'

Range("C4").Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub


vemos en la programación que hemos obtenido (Alt+F11 editor Visual Basic) que exclusivamente se seleccionará al ejecutar la Macro 'Color_fondo' la celda C4.
Si repetimos la misma operación, pero esta vez, pulsando la opción de 'Usar referencias relativas' vemos el código desarrollado por el Asistente:


Sub Color_fondo_2()
'
' Color_fondo_2 Macro
' Da color verde al fondo de la celda activa
'
' Acceso directo: CTRL+j
'

ActiveCell.Select
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
End Sub


Observamos la diferencia entre un desarrollo y otro, y es que en el caso de haber pulsado 'Referencias relativas' el código VBA generado por el Asistente ha sido ActiveCell.Select, mientras que en el primer caso, sin activar 'Referencias relativas' el código VBA fue Range("C4").Select:
  • ActiveCell.Select: selecciona la celda activa en ese momento, y es a esa celda a la que dará color.

  • Range("C4").Select: selecciona exclusivamente la celda C4, y por tanto será a la única celda que dará color.


En Excel 2003 el botón de 'Referencia relativa' aparece en la barra de herramientas Detener grabación que se activa cuando estamos grabando una Macro con el Asistente:


En Excel 2007 el botón de 'Referencia relativa' aparece en el menú Programador> Opciones de Código:

No hay comentarios:

Publicar un comentario en la entrada