Borrar contenido de celda formulas no

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Borrar contenido de celda formulas no

Notapor Potter2K10 » 11 May 2010 12:09

Hola, amigos

Necesito una macro que haga lo siguiente:
Que al seleccionar un rango, borre el contendino de este, dejando intactas la celdas que contengan FORMULAS y el encabezado de la tabla que esta en NEGRITA.

Adjunto ejemplo con pequeña explicación.

Salu2.xls

:mrgreen:
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Potter2K10
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 14:04

Re: Borrar contenido de celda formulas no

Notapor mjrofra » 11 May 2010 13:33

Hola Potter,

qué tal algo así:

Código: Seleccionar todo
Sub prueba()

    Dim tabla As Excel.Range
    Dim tablas As Excel.Range
   
    With Sheets("Sheet1").UsedRange
        Set tablas =Union(.SpecialCells(2), .SpecialCells(-4123))
    End With
         
    For Each tabla In tablas.Areas
        If tabla.Rows.Count > 1 Then
           Intersect(tabla, tabla.Offset(1)).SpecialCells(2).ClearContents
        End If
    Next tabla
   
    Set tablas = Nothing
   
End Sub
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Borrar contenido de celda formulas no

Notapor Potter2K10 » 11 May 2010 13:42

Excelente mjrofra

Justamente lo que necesitaba, gracias por le aporte.


Solo una pregunta se podra usar con un imputbox donde se seleccion el rango a aplicar la macro.
y que se use en la hoja activa no limitandola a una en especifico.


intentare modificarla par conseguir lo antes dicho pero si la puedes modicar mucho que mejor.


Salu2.xls
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Potter2K10
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 14:04

Re: Borrar contenido de celda formulas no

Notapor Antoni » 11 May 2010 13:48

Hola a todos:

Me pierdo mjrofra, podrías comentar por favor un poco las instrucciones:

Código: Seleccionar todo
Set tablas =Union(.SpecialCells(2), .SpecialCells(-4123))
Intersect(tabla, tabla.Offset(1)).SpecialCells(2).ClearContents

Gracias.

Salu2. Antoni.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Borrar contenido de celda formulas no

Notapor mjrofra » 11 May 2010 19:05

Potter2K10 escribió:...Solo una pregunta se podra usar con un imputbox donde se seleccion el rango a aplicar la macro.
y que se use en la hoja activa no limitandola a una en especifico...


¿Qué tal así?

Código: Seleccionar todo
Sub prueba()

    Dim tabla As Excel.Range
    Dim tablas As Excel.Range
   
    On Error GoTo Salir
        Set tablas = Application.InputBox( _
                     prompt:="Seleccione el rango con las tablas a limpiar.", _
                     Title:="Limpiar tablas", _
                     Type:=8)
    On Error GoTo 0
   
    With tablas
        Set tablas = Union(.SpecialCells(2), .SpecialCells(-4123))
    End With
         
    For Each tabla In tablas.Areas
        If tabla.Rows.Count > 1 Then
            Intersect(tabla, tabla.Offset(1)).SpecialCells(2).ClearContents
        End If
    Next tabla
   
    Set tablas = Nothing
   
Salir:
   
End Sub
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Borrar contenido de celda formulas no

Notapor mjrofra » 11 May 2010 19:19

...recuerda que en el inputbox puedes incluir rangos no adyacentes manteniendo presionado Ctrl mientras los seleccionas :D.

Antoni escribió:podrías comentar por favor un poco las instrucciones...


Hola Antoni,

con gusto:

Código: Seleccionar todo
Application.Union(.SpecialCells(2), .SpecialCells(-4123))


crea un rango a partir del rango original excluyendo las celdas en blanco... en este caso, sirve para que a partir de la selección, se generen varios rango que luego se van a recorrer en el for each tabla in tablas.areas

esta otra parte:

Código: Seleccionar todo
Application.Intersect(tabla, tabla.Offset(1)).SpecialCells(2).ClearContents


sirve para impiar los rangos excluyendos los encabezados :D.

Prueba esta misma macro en el archivo y verás lo que va haciendo:

Código: Seleccionar todo
Sub prueba()

    Dim tabla As Excel.Range
    Dim tablas As Excel.Range
   
    With Sheets("Sheet1").UsedRange
        .Select
        MsgBox "Se ha seleccionado el rango con el que se va a trabajar."
        Set tablas = Union(.SpecialCells(2), .SpecialCells(-4123))
    End With
   
    tablas.Select
    MsgBox "Se ha dividido el rango usado de la hoja en las áreas seleccionadas."
         
    For Each tabla In tablas.Areas
        If tabla.Rows.Count > 1 Then
            Intersect(tabla, tabla.Offset(1)).SpecialCells(2).Select
            MsgBox "Se ha encontrado una tabla para limpiar."
        End If
    Next tabla
   
    Set tablas = Nothing
   
Salir:
   
End Sub


Potter2K10, importante: Si no hay datos para limpiar en alguna tabla, se producirá un error... pensando en eso de pronto convenga usar un On error Resume Next en la última macro que te sugerí:

Código: Seleccionar todo
Sub prueba()

    Dim tabla As Excel.Range
    Dim tablas As Excel.Range
   
    On Error GoTo Salir
        Set tablas = Application.InputBox( _
                     prompt:="Seleccione el rango con las tablas a limpiar.", _
                     Title:="Limpiar tablas", _
                     Type:=8)
    On Error GoTo 0
   
    With tablas
        Set tablas = Union(.SpecialCells(2), .SpecialCells(-4123))
    End With
     
    On Error Resumen Next:
    For Each tabla In tablas.Areas
        If tabla.Rows.Count > 1 Then
            Intersect(tabla, tabla.Offset(1)).SpecialCells(2).ClearContents
        End If
    Next tabla
   
    Set tablas = Nothing
   
Salir:
   
End Sub
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Borrar contenido de celda formulas no

Notapor Antoni » 12 May 2010 04:39

Muchas gracias, lo pruebo.

Salu2. Antoni.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Borrar contenido de celda formulas no

Notapor Potter2K10 » 12 May 2010 10:33

Hola mjrofra gracias por tan prontas respuestas y aportes a la comunidad con tan buenas macros

Solo tengo un pequeño problema con la macro que muestras

Al seleccionar el rango donde tiene que trabajar borra todos los datos de la hoja activa no del rango seleccionado.

Ejemplo si selecciono de la celda F3:F58 y tengo dos encabezados me elimina todo el rango salvo los primero encabezados imagino que es por el tabla.Offset(1) pero igual no trabaja con los rangos seleccionados si no con toda la hoja y si tengo mas datos aparte en la misma hoja los elimina.

me voy a explicar mejor, talvez sea por esto que no pega con el fin deseado.

la idea es seleccionar los dos rango de una vez segun el archivo ejemplo y que solo elimine los valores diferentes a encabezados y formulas no tomando en cuenta los demas rango de la hoja solo lo seleccionado.

Salu2.xls
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Potter2K10
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 14:04

Re: Borrar contenido de celda formulas no

Notapor mjrofra » 13 May 2010 17:24

Hola de nuevo Potter,

no entiendo muy bien el problema que estás teniendo... la macro 'asume' (bueno, yo asumí con base en tu ejemplo) que el encabezado es de una sola fila. Si el encabezado es de más de una fila la macro borrará parte del encabezado... podrías subir un nuevo ejemplo más cercano a tus datos reales... o subir una pequeña muestra del archivo en el que ejecutaste la macro y explicar allí los problemas que tuviste con la macro y cómo debería quedar.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Borrar contenido de celda formulas no

Notapor Potter2K10 » 14 May 2010 10:46

Hola, disculpa que responda hasta ahora, pero aqui te envio un nuevo ejemplo

Espero se comprenda ...


salu2.xls
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Potter2K10
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 14:04

Re: Borrar contenido de celda formulas no

Notapor mjrofra » 14 May 2010 13:03

Potter!!

pues he ejecutado la macro que te sugerí y me funcionó a la perfección en tu archivo... no sé si hay algo que yo no esté entendiendo. Te adjunto el archivo con la macro... la he ejecutado, he seleccionado el rango D2:I31 y me ha borrado sólo las celdas en verde del rango seleccionado ¿?
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Borrar contenido de celda formulas no

Notapor Potter2K10 » 14 May 2010 14:13

Hola Gracias Mauricio por todo tu empeño te agradesco mucho. y si tienes razon funciona a la perfección.

Lastima que en mi archivo original no me funciona creo que es por los diferentes formatos que tengo en el, pero buscando en la web encontre otra macro parecida solo que no trabaja con tablas le hice algunas modificaciones para adaptarla y creo que en las tablas como las reconoce la macro esta mi problema con mi archivo original te la muestro para que la veas; si funciona en mi archivo solo que lo hace muy lento pero igual funciona. si tiene alguna mejora a esta macro seguro lo compartes.

Aqui el codigo:

Código: Seleccionar todo
Sub DeleRangos()
Application.ScreenUpdating = False
Dim myRange As Range
Dim selRange As Range
Set selRange = Intersect(Selection, ActiveSheet.UsedRange)
If selRange Is Nothing Then
    GoTo exit_SmartDel
End If
For Each myRange In selRange
    If IsNumeric(myRange.Formula) = True Then
       If ActiveSheet.ProtectContents = False And myRange.HasFormula = True And myRange.Font.Bold = True Then
          myRange.MergeArea.ClearContents
        Else
           If myRange.Locked = False Or myRange.Font.Bold = False Then
              myRange.MergeArea.ClearContents
           End If
        End If
     End If
Next myRange
exit_SmartDel:
    Application.ScreenUpdating = True
End Sub


Cuidate..
Salu2.xls
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Potter2K10
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 14:04

Re: Borrar contenido de celda formulas no

Notapor mjrofra » 15 May 2010 03:09

Hola de nuevo Potter,

Por favor, revisa esto: Borrar los datos al interior de una o más tablas.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Borrar contenido de celda formulas no

Notapor Potter2K10 » 15 May 2010 18:15

Gracias Mauricio esta excelente la macro funciona de maravilla.


Muy buena pagina por cierto.



Salu2.xls
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Potter2K10
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 14:04


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 6 invitados