Imprimir
Categoría: Office

Limpiar Código en Excel

 

 

   Despues de varios lustros  Boca sellada sin escribir acerca de La Programación Orientada a Objetos en Excel he querido retomar mis nuevas andanzas con este maravilloso mundo que es la Programación.

   He navegado mucho por Internet  visualizando que Excel en programacion esta muy trillado, muy masticado, por ello he estado todo este tiempo dandole vueltas a la cabeza para poder ofrecer algo distinto a lo que por Internete abunda asi que continuo con mi nuevo recorrido con una nueva forma de explicar << La programacion  en Excel >>  y espero sea de vuestro agrado o al menos eso se intenta  Inocente

 

Una manera fácil de aprender programación es sencilla y llanamente, con la grabadora de Macros y  por su puesto con la ayuda de VB que tenemos todos en nuestro Office MS Excel.

Empezemos con un sencillo ejemplo:

1-> Abrimos un libro de Excel y nos colocamos en la celda B1 de la  Hoja1

Le damos a Grabar macro y sin escribir nombre de la macro y sin ponerle ningún atajo ni nada de  nada le damos a aceptar directamente.

***Nota: Click << aqui >> para ver como funciona la Grabadora de macros mediante un video demo  Sonriente

Una vez esta en marcha la grabadora de macros, nos ponemos con el ratón en la celda A1.

Escribimos lo siguiente :

Nombre

Luego le damos a la tecla [ TaB ] para ponernos en la celda B1 y escribimos lo siguiente: 

Apellidos

Luego otra vez a la tecla [ TaB ] y en C1 escribimos lo siguiente :

Dirección

de tal manera que nos quede asi:

celdas

 

 

 

 

 

solo escribir dirección  le damos a la tecla [Enter o Intro ] y paramos la macro.

2 -> Nos vamos a Alt + F11 para poder ver el código generado y veremos que nos ha quedado así >>

 

***Nota nuestra macro se creara en la carpeta Modulos, click en esa carpeta y dos click en [Modulo1], os recuerdo el video ilustrativo sobre Excel y la grabadora de macros << Aqui >>

 

modulos  

Pasaremos  a ver el escenario de código de dicho Modulo1 y le daremos un buen vistado a el código  generado >>

 

Sub Macro1()

Range("A1").Select
ActiveCell.FormulaR1C1 = "Nombre"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Apellidos"
Range("C1").Select
ActiveCell.FormulaR1C1 = "Direccion"
Range("A2").Select


End Sub

Como podéis Observar el código resultado de nuestra grabación que nos dice lo siguiente >>

--- Segun nuestra grabadora hemos seleccionado la celda A1 [ Range("A1").Select ]

--- A la celda activa la grabadora le ha aplicado una formula llamada "Nombre" [ ActiveCell.FormulaR1C1 = "Nombre"]

-- Y la grabadora ha seguido realizando lo mismo para las celdas B1 y C1 exactamente lo que nuestras manos ha realizado en la interfaz de Excel.

Pues bien nuestro objetivo ahora es limpiar el código resultante de la grabadora de macros de tal manera que haga exactamente lo mismo pero con los objetos y propiedades ajustadas a la realidad de nuestra necesidad.

*** Nota: Consejo podéis mirar la ayuda de VBA de Excel para poder entender los objetos, métodos y propiedades y darle un vistazo al siguiente articulo << aqui >>

Para ello la Celda A1 no va a ser necesario que la seleccionemos ya que VB Excel es muy listo y sabe perfectamente que podemos introducir un valor en una celda sin necesidad de seleccionarla, por lo tanto quitamos la propiedad [Select ] del objeto [ Range("A1") ] en este caso nuestra celda y lo sustituimos por el valor que nosotros queremos darle en este caso el valor [ Nombre ] quedando así:

 Range("A1").Value = "Nombre"

Con lo cual nos damos cuenta también que no es necesaria la siguiente línea >>

ActiveCell.FormulaR1C1 = "Nombre"

Porque sencillamente no vamos aplicarle ninguna formula a ninguna celda activa simplemente queremos dar un valor a nuestra celda A1, B1 y C1

por lo tanto nuestro código ahora queda de la siguiente manera >>

Sub Macro1()

Range("A1").Value = "Nombre"
Range("B1").Value = "Apellidos"
Range("C1").Value = "Dirección"

End Sub

***Nota: El objeto Range es una propiedad del objeto [ Worksheets ] que hace referencia a la hoja donde queramos efectuar nuestro trabajo  por lo tanto nuestro procedimiento quedaría de la siguiente manera >>

Sub Macro1()

With Worksheets("hoja1")
.Range("A1").Value = "Nombre"
.Range("B1").Value = "Apellidos"
.Range("C1").Value = "Direccion"
End With

End Sub

¿Que nos dice ese codigo?

Pues que con nuestra Hoja1 pon valores en A1, B1 y C1. De esta manera aseguramos que el código siempre se ejecute en la Hoja1.

De la otra manera si no hacemos mención en el procedimiento  de la hoja en la que queramos aplicar dichos valores, la macro se ejecutaría siempre en la hoja activa, si os encontráis en la hoja2 y ejecutáis el código veréis que realiza su función y así en cualquier hoja que os encontréis.

De esta manera nos aseguramos de que nuestro código siempre se ejecute en la hoja1 que es la cual voy a trabajar .

***Nota:

 Para hacer referencia al objeto Range como hemos visto la forma que es mas utilizada y que el grabador de macros nos efectúa es Range("A1") pero existen otras propiedades las cuales nos pueden ser muy útiles a la hora de crear procedimientos mas complejos.

Proximamente mas cuando mi tiempo y mis ganas me lo permitan  Indeciso

  Beso Tux - Monica

Visto: 14497