Como seleccionar varias columnas y el contenido borrarlo y poner ceros con macro

Como puedo seleccionar un rango de columnas con un texbox que me pida la columna por titulo inicial y la columna por titulo final. Por ejemplo si tengo de Enero a Diciembre y quiero borrar el contenido de Marzo a Junio y al borrar los datos me rellene con ceros.

Espero haberme explicado

Gracias expertos

1 respuesta

Respuesta
1

¿Los títulos serán nombres de meses o pueden ser cualesquiera?

Y la introducción de los nombres debe ser en un textbox o puede ser en dos, yo creo que mejor en dos, uno para la columna inicial y otro para la final.

De todas formas si me puedes mandar el libro, será todavía mejor para despejar las dudas. Hazlo a

[email protected]

Pon como asunto el título de la pregunta y como nombre del fichero algo alusivo como

SeleccionarColumnas.XLSM (o la terminación que tenga)

Si no mandas el libro dímelo e intentaré hacer algo general que pueda servirte.

Vale, me ha llegado y veo el ejemplo.

¿Entonces entiendo que quieres hacerlo con una macro que no lance un formulario sino una InputBox?

Es que con un formulario se puede dejar mejor y más cómodo de usar, aunque con la InputBox es más que suficiente si quieres.

Me gustaría mas con texbox , no he metido formularios,mejor que me pida el mes inicial y después el mes final.

Si se puede de esta manera te lo agradeceria

Si, puede hacerse. El problema es que la InputBox solo permite introducir un dato, entonces o la lanzamos dos veces y guardamos el primer valor en una variable global pública o hacemos que en una sola vez se metan los dos meses separados por ejemplo por un guion. ¿Qué te parece mejor?

Me gustaría que me preguntara 2 veces,

Pues creo que ya lo tengo, esta es la macro.

Sub Borrar_Columnas()
Dim Hallado As Boolean
Dim Texto
Dim Ucol, Ufil, Inicio, Fin As Integer
Dim Rango As Range
Ucol = Worksheets("Hoja1").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
Do
   Hallado = False
   Texto = InputBox("Introduzca el mes inicial: ")
   If Texto = "" Then Exit Sub
   Set Rango = Worksheets("Hoja1").Range(Cells(1, 1), Cells(1, Ucol)).Find(Texto, LookIn:=xlValues, lookat:=xlWhole)
   If Not Rango Is Nothing Then
      Hallado = True
      Inicio = Rango.Column
   End If
Loop Until Hallado
Do
   Hallado = False
   Texto = InputBox("Introduzca el mes final: ")
   If Texto = "" Then Exit Sub
   Set Rango = Worksheets("Hoja1").Range(Cells(1, 1), Cells(1, Ucol)).Find(Texto, LookIn:=xlValues, lookat:=xlWhole)
   If Not Rango Is Nothing Then
      Hallado = True
      Fin = Rango.Column
   End If
Loop Until Hallado
Ufil = Worksheets("Hoja1").Range("A" & Cells.Rows.Count).End(xlUp).Row
Worksheets("Hoja1").Range(Cells(2, Inicio), Cells(Ufil, Fin)) = 0
End Sub

Aunque te pide mes inicial y final da lo mismo, si introduces primero el final y luego el inicial hace lo mismo.

No se hasta que punto necesitas explicaciones. Se pide el nombre del primer mes hasta que es un texto que aparezca en la primera fila o pongas un nombre vacío y pulse cancelar. En estos dos últimos casos se abandona. Luego se hace lo mismo con el otro mes. Ysi los dos meses son válidos se pone a cero las columnas intermedias.

Ucol significa última columna y Ufil última fila.

Si no entiendes algo pregúntamelo. Y si ya está bien no olvides puntuar.

Ahora mismo me pongo a enviarte el fichero para que lo pruebes, ojala te sirva.

Excelentísimo, te quiero felicitar de manera personal porque te tomaste la molestia de tener varias opciones para hacerlo y me preguntaste cual se me ajustaba a mis necesidades.

De veras te agradezco infinitamente

Mi nombre

Alfonsö Pineda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas