Cómo usar VBA para insertar múltiples columnas en una hoja de Excel

En este artículo te mostraremos cómo utilizar VBA para insertar múltiples columnas en una hoja de Excel. Aunque puede parecer complicado, el procedimiento es bastante sencillo. En este artículo, revisaremos un procedimiento VBA que elimina filas en un rango seleccionado donde un valor en ese rango coincide con un valor de entrada proporcionado por el usuario. Aunque el código puede parecer abrumador, incluye comentarios que facilitan su comprensión y documentación.

Índice de Contenido
  1. Acerca del procedimiento VBA
  2. Cómo utilizar el procedimiento VBA
  3. Aspectos a tener en cuenta

Acerca del procedimiento VBA

Puedes modificar el procedimiento del Listado A según tus necesidades, pero ten en cuenta que es necesario seleccionar un rango de una sola columna antes de ejecutarlo. Las primeras líneas declaran y definen varias variables, verificamos que el rango seleccionado contenga más de una celda y que no tenga más de una columna. Cuando se cumplen estas condiciones, el código te solicitará ingresar el valor que deseas buscar dentro del rango seleccionado. No hay un control de errores de tipo de datos en esta declaración, acepta cualquier tipo de entrada y la trata como una cadena de caracteres. Después, se realiza un bucle a través del rango seleccionado para verificar si hay coincidencias con el valor de entrada. Cuando se encuentra una coincidencia, el código elimina toda la fila. Si no se encuentran coincidencias, se muestra un mensaje informativo (lo cual sucederá cuando el valor de entrada no coincida con ningún valor en el rango seleccionado).

Listado A

Sub EliminarFilas()
  ' Elimina filas seleccionando el rango y proporcionando un criterio.
  ' El rango debe ser de una sola columna. ¿Cómo capturar y obligar a seleccionar?
  Dim i As Integer
  Dim j As Integer
  Dim selRango As Range
  Dim criterio As String ' Utilizar Integer o Variable si no es una cadena de caracteres.

  Set selRango = Selection
  
  ' Captura una selección de una sola celda
  If selRango.Rows.Count = 1 Then
    MsgBox "Has seleccionado solo una celda." _
      & "Por favor, selecciona múltiples filas contiguas" _
      & "en una sola columna.", vbOKOnly
    Exit Sub
  End If
  
  ' Capturar selección de múltiples columnas
  If selRango.Columns.Count > 1 Then
    MsgBox "Has seleccionado múltiples columnas." _
      & "Por favor, selecciona un rango de una sola columna.", _
      vbOKOnly
    Exit Sub
  End If
  
  ' Todos los valores serán tratados como cadenas de caracteres, sin importar la intención.
  criterio = InputBox("Por favor, ingresa el criterio como una cadena de caracteres.", _
    "Eliminar por criterio.")

  ' Ciclo a través de las filas en el selRango y elimina la fila completa cuando el criterio coincide con el valor actual.
  j = 0
  For i = selRango.Rows.Count To 1 Step -1
    If criterio = selRango.Cells(i, 1).Value Then
      selRango.Cells(i, 1).EntireRow.Delete
      j = j + 1
    End If
  Next i
  
  ' MsgBox "Has eliminado " & j & " filas.", vbOKOnly
  
  ' Muestra un mensaje si no se eliminaron filas debido a que no hay coincidencias.
  If j = 0 Then
    MsgBox "Por favor, inténtalo de nuevo y revisa cuidadosamente el valor ingresado." _
      & "El procedimiento no ha eliminado ninguna fila porque no se encontraron valores que coincidan con " & criterio & ".", _
      vbOKOnly
  End If
End Sub

Si estás utilizando una versión con cinta de opciones, asegúrate de guardar el libro de Excel como un archivo habilitado para macros (.xlsm) para que el procedimiento se ejecute correctamente. Si estás utilizando una versión con menú, puedes omitir este paso.

Para ingresar el procedimiento, presiona Alt + F11 para abrir el Editor de Visual Basic (VBE). En el Explorador de proyectos a la izquierda, selecciona ThisWorkbook para poder ejecutar el procedimiento en cualquier hoja. Puedes ingresar el código manualmente o importar el archivo .cls. Además, el macro se encuentra en los archivos descargables .xlsx y .xls. Si ingresas el código manualmente, no pegues directamente desde esta página web. En su lugar, copia el código en un editor de texto y luego pégalo en el módulo ThisWorkbook. De esta manera, se eliminarán cualquier carácter no válido que pudiera causar errores.

Enseñanza y Aprendizaje con Microsoft: Herramientas y Lecciones para Profesores de todos los Niveles

Cómo utilizar el procedimiento VBA

Una vez que hayas agregado el procedimiento a tu libro de Excel a través del VBE, podrás ejecutarlo en cualquier rango de datos en cualquier hoja de tu libro. Veamos cómo eliminar todos los registros de bebidas (columna E) en el simple conjunto de datos mostrado en Figura A. Primero, selecciona el rango de datos del cual deseas eliminar las filas; en nuestro caso, sería E3:E47 en el libro de demostración. Luego, sigue los siguientes pasos:

  1. Haz clic en la pestaña "Desarrollador".
  2. Haz clic en "Herramientas" en el grupo "Código".
  3. En el cuadro de diálogo resultante, elige "EliminarFilas()", como se muestra en Figura B y haz clic en "Ejecutar" (El archivo de demostración contiene otros procedimientos citados en la introducción).
  4. Cuando se te solicite, ingresa Bebidas, como se muestra en Figura C, y haz clic en "Aceptar".

Figura A

Figura B

Figura C

Cómo usar VBA para insertar múltiples columnas en una hoja de Excel - Software | Imagen 1 Newsmatic

¡Eso es todo! Como puedes ver en Figura D, los registros de bebidas (filas) han sido eliminados. De hecho, el primer registro, que era un registro de bebida, ha sido eliminado. Para encontrar más filas eliminadas, verifica la columna de ID a la izquierda. Era una lista de valores consecutivos. Encontrar los valores faltantes es fácil y esos valores faltantes representan los registros de bebidas eliminados.

Guía de Examen de Certificación Lotus Notes: Desarrollo de Aplicaciones y Administración del Sistema

Figura D

En resumen, seleccionaste los valores de categoría en el conjunto de datos. Luego, el macro te pidió el valor de categoría a buscar, ingresaste "Bebidas". Cuando el bucle For encontró una coincidencia, eliminó todo el registro. Como resultado, tu conjunto de datos ya no contiene registros de bebidas.

Aspectos a tener en cuenta

Puede haber valores almacenados fuera de la pantalla que no puedes ver. Este procedimiento elimina toda la fila, lo cual incluye datos que no son visibles. Asegúrate de que no haya datos a la izquierda o derecha de la columna seleccionada que no deseas eliminar antes de ejecutar este macro. No es posible deshacer la eliminación con Ctrl + Z. Si tienes alguna duda, siempre guarda el libro justo antes de eliminar los datos. De esta manera, podrás revertir los cambios si es necesario. En un artículo futuro, te mostraré cómo utilizar la instrucción InputBox() para solicitar a los usuarios que seleccionen un rango; de esta manera, no tendrán que recordar seleccionarlo antes de ejecutar el procedimiento.

Algunas entradas de categoría pueden ser un poco largas, lo que aumenta la posibilidad de cometer errores de escritura al ingresar la categoría cuando se te solicite. Puedes copiar el valor al portapapeles antes y luego pegarlo en el cuadro de entrada cuando se te solicite. Podrías ofrecer una lista de valores de categoría para evitar esta posibilidad, pero eso va más allá del alcance de este procedimiento simple.

Si ingresas una palabra incorrecta o un valor de categoría que no existe, no te preocupes. El bucle For realiza un seguimiento de las filas eliminadas con el contador J. Si ese contador es igual a cero, el procedimiento mostrará un mensaje informativo que te indicará que no se ha eliminado ninguna fila y (probablemente) por qué. Si deseas mostrar el número de filas eliminadas, puedes hacerlo agregando una instrucción MsgBox. El archivo de demostración ya tiene esta instrucción, pero está comentada. Simplemente elimina el carácter de comentario (').

No es evidente, pero el procedimiento te permite eliminar valores de cualquier columna en cualquier hoja, por lo que es bastante versátil. Selecciona cualquier columna de datos individuales y proporciona el valor que deseas buscar. Trabajamos con la columna de categoría para establecer el criterio, pero puedes utilizar el procedimiento con cualquier columna.

Cómo gestionar eficazmente grandes volúmenes de correo electrónico

Si deseas trabajar con más ejemplos de eliminación, la hoja llamada Datos en el archivo de demostración contiene el conjunto de datos completo. Dado que no se puede deshacer la eliminación realizada por el procedimiento, puedes copiar y pegar el conjunto de datos completo para realizar cada ejemplo.

Es poco probable que desees realizar todos esos pasos cada vez que ejecutes el procedimiento. En su lugar, agrega el macro a la Barra de acceso rápido. Para hacerlo, lee Cómo agregar macros de Office a la barra de acceso rápido para acceder rápidamente.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Software, allí encontraras muchos artículos similares a Cómo usar VBA para insertar múltiples columnas en una hoja de Excel , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.