Con esta macro convertir a título las celdas seleccionadas podremos fácilmente implementar en nuestro Excel un comando que muchas veces echamos en falta.
Pretende ser sólo un ejemplo (sencillo y mejorable) de como llamar desde una macro a una función propia a la que tras facilitarle de dato con que debe trabajar nos devuelve el resultado convenientemente procesado.
Llamaremos a la macro Titulo(), y para tenerla disponible para todos los libros que editemos, deberemos almacenarla en el libro personal.xlsb.
Mostrar el libro de macros Personal.xlsb
Para editarlo deberemos mostrar previamente este libro desde la ficha Vista > grupo Ventana > Mostrar.
No debemos hacer modificaciones en este libro, sólo en su código VBA, por tanto, tan pronto como se muestre, debemos reducir la ventana a un icono en la barra de tareas.
Activamos el editor IDE desde la ficha Programador > grupo Código > Visual Basic.
Añadir un módulo
Para mantener convenientemente ordenado nuestro código, podemos agregar un nuevo módulo en donde almacenar las macros que trabajan con textos, haciendo clic derecho sobre la carpeta Módulos del proyecto PERSONAL.XLSB, y seleccionar la opción Insertar > Módulo.
El módulo se agregará con un nombre genérico. Para cambiar su nombre, desde el panel Propiedades, y teniendo seleccionado el módulo, modificamos su propiedad Name. Llamamos a este módulo Textos.
Si no tenemos el panel Propiedades a la vista, podemos mostrarlo fácilmente pulsando F9, o desde el menú Ver > Ventana propiedades.
Tras crear el módulo, o si ya lo habías creado en otra ocasión, haciendo un doble clic sobre el nombre del módulo en el explorador de proyectos, se mostrará en el área de edición del IDE.
El código de la macro convertir a título
Tecleamos o copiamos y pegamos el siguiente código:
Sub Titulo() ' Pone la primera letra de cada palabra en mayúsculas ' tras punto, admiración e interrogación cerradas, ' en el texto de las celdas seleccionadas On Local Error GoTo Error_Titulo Dim celda As Range, marcas As String marcas = ".!?" For Each celda In Application.Selection.Cells celda.Value = auxiliarTitulo(celda.Value, marcas) Next Exit Sub Error_Titulo: ' si se produce un error muestra el mensaje MsgBox "Se produjo un error en la macro Titulo" & vbCrLf & _ "Error número: " & Err.Number & vbCrLf & _ "Descripción: " & Err.Description, vbCritical, "Libro Personal de macros" End Sub Private Function auxiliarTitulo(texto As String, marcas As String) Dim contador As Long, anteriorEsMarca As Boolean, caracter As String, resultado As String For contador = 1 To Len(texto) caracter = Mid(texto, contador, 1) If caracter = " " Then ElseIf InStr(marcas, caracter) > 0 Then anteriorEsMarca = True Else If anteriorEsMarca Or contador = 1 Then caracter = UCase(caracter) anteriorEsMarca = False Else caracter = LCase(caracter) End If End If resultado = resultado + caracter Next auxiliarTitulo = resultado End Function
Guardamos y cerramos el editor IDE
Tan sólo nos queda ocultar de nuevo el libro de macros Personal. Para ello hacemos clic sobre su icono en la barra de tareas de Windows, y tras mostrarse como la ventana activa, seleccionamos desde el menú Vista > grupo Ventana > Ocultar.
Ahora podremos asignar la macro convertir a título a un botón en la barra de herramientas de acceso rápido, o a un nuevo botón en el lugar que prefieras de la cinta de opciones, y dispondrás de un comando muy útil y que Excel, en ninguna de sus versiones hasta el día de hoy, no incorpora.
También puede interesarte: