EJECUTA UNA MACRO A LA HORA DE ABRIR

Ahora veremos como se ejecuta una macro a la hora de abrir un libro
Primeramente inserta un Modulo del Menú Insertar dentro de Visual Basic y escribe el siguiente código:
Sub Auto_open()
Load UserForm1
UserForm1.Show
End Sub
La magia esta en el procedimiento Auto_open() que permite ejecutar automáticamente lo que se encuentre dentro de el cuando abras un libro que contenga este código, en este ejemplo cuando se abre el libro se activa el formulario 1 que programe.
Así que todo lo que agregues dentro de este procedimiento se ejecutara automáticamente cuando abras un libro, que te parece.
A continuación veremos como ordenar una información por orden alfabética ascendente, es un código muy completo y bueno que te permite localizar los datos y ordenarlos, sin pasarse un renglón en blanco.
Observemos el siguiente ejemplo y aprendamos de el:
Si se fijan en la siguiente pantalla tengo datos en una hoja que empinan en el renglón A10 y terminan en C16, el siguiente código detectara donde debe detenerse para poder ordenar los datos. Es necesario crear el código para ordenar datos, pero aquí yo te lo muestro:
Programa esto en el botón1
Private Sub CommandButton1_Click()
Rem este código localiza el ultimo registro por medio del renglón
Range("a10").Select
 
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Loop
 
Rem llega hasta el a17 donde no hay información y se regresa un renglón para ser exacto con la siguiente línea.
 
ActiveCell.Offset(-1, 0).Select
 
Rem este código localiza la última columna del último dato
 
Do While ActiveCell <> Empty
ActiveCell.Offset(0, 1).Select
Loop
ActiveCell.Offset(0, -1).Select
 
Rem esta línea guarda en la variable celdaactiva la celda exacta donde esta el ultimo dato de la ultima columna de información, en este caso C16.
 
celdaactiva = ActiveCell.Address
 
Rem este código toma el rango desde A10 donde empieza la información, hasta donde encontró el ultimo dato C16, que lo guarda la variable celdaactiva. Selecciona de A10 hasta C16.
 
Range("A10:" + celdaactiva).Select
 
Rem este código ordena los datos en orden ascendente, el código fue generado en Excel, así que si no sabes generarlo solo copialo de aquí.
 
Selection.Sort Key1:=Range("A10"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 
End Sub
Así es como funciona este código de Macros de Excel ordenando exactamente desde A10 hasta donde están los datos finales.
Bueno ahora para convertir la información a Minúscula o Mayúscula es muy parecido el código, solo obsérvalo:
Private Sub CommandButton1_Click()
Range("a10").Select
Do While ActiveCell <> Empty
ActiveCell.FormulaR1C1 = LCase(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Así es la magia esta en Lcase que convierte a Minúsculas y Ucase a Mayúsculas, empieza en A10 y hasta que no encuentra datos deja de convertir a Minúsculas.
El siguiente Formulario y código muestra la fuerza de cómo se puede consultar y modificar el dato que se encontró.
Etiqueta 4, escríbele el numero 9 dentro.
Crea la siguiente Interfaz, 4 Etiquetas, 3 Textbox y 3 Botones
Copia el siguiente código:
Private Sub CommandButton1_Click()
Rem si no se escribe nada en los Textboxs a la hora de insertar escribe No Tiene
 
If TextBox1 = EmptyThenRange("A9").FormulaR1C1 = "No Tiene"
If TextBox2 = EmptyThenRange("B9").FormulaR1C1 = "No Tiene"
If TextBox3 = EmptyThenRange("C9").FormulaR1C1 = "No Tiene"
Range("A9").Select
Selection.EntireRow.Insert
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub
Private Sub CommandButton2_Click()
On Error GoTo noencontro
Rem Código para buscar, ya lo conocemos
Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveCell.Offset(0, 1).Select
TextBox2 = ActiveCell
ActiveCell.Offset(0, 1).Select
TextBox3 = ActiveCell
Rem la etiqueta 4 toma el valor del renglón activo y permite modificar la información que encontró, ya que modifiques la información presionas el botón actualizar.
Label4 = ActiveCell.Row
noencontro:
End Sub
Private Sub CommandButton3_Click()
Rem Vuelve a indicar el renglón 9 para escribir en los Textboxs
 
Label4 = "9"
Range("a9").Select
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox1.SetFocus
End Sub
Private Sub TextBox1_Change()
Rem si nos damos cuenta la etiqueta 4 sirve para llevar el renglón donde introducimos los datoso los modificamos, asi que cada textbox que programemos debe llevar estas lineas.
Range("A" + Label4).FormulaR1C1 = TextBox1
End Sub
Private Sub TextBox2_Change()
Range("B" + Label4).FormulaR1C1 = TextBox2
End Sub
Private Sub TextBox3_Change()
Range("C" + Label4).FormulaR1C1 = TextBox3
End Sub
Bueno amigos, espero les sea de provecho los ejemplos mostrados, por lo tanto nos vemos en la próxima edición, con mas de Macros en Excel.