Saltar al contenido

recuperar datos de celda


Recommended Posts

publicado

tengo el siguiente codigo

Sub limpiar2()

Application.ScreenUpdating = False

Sheets("PRODUCCION").Select

Range("A7").Select

ActiveCell.ClearContents

Range("A7:A524,B7:B524,D7:CF524,CH7:CM524,EL7:EO524,FC7:FS524").Select

Selection.ClearContents

Application.ScreenUpdating = True

Range("A7").Select

End Sub

como puedo hacer para recuperar los datos que ya fueron eliminados, osea que si al final me arrepnti de borrarlos cual seria el codigo para una macro que me ayude a recuperar los datos borrados. Gracias

publicado

Gracias,

En el foro vi en una ocasion, que habia un macro para recuperar, lamentablemente, no lo copie o a lo mejor, vi mal, muchisimas gracias por la ayuda

- - - - - Mensaje combinado - - - - -

hola he encontrado el codigo, pero no se como aplicarlo, me dan una mano por fa

Option Explicit

Type SaveRange

Val As Variant

Addr As String

End Type

Public OldWorkbook As Workbook

Public OldSheet As Worksheet

Public OldSelection() As SaveRange

'------------------------------------------------------------------------------

Sub Cambio()

Dim i

Dim cell

If TypeName(Selection) <> "Range" Then Exit Sub

'Guarda los valores actuales para deshacer

ReDim OldSelection(Selection.Count)

Set OldWorkbook = ActiveWorkbook

Set OldSheet = ActiveSheet

i = 0

For Each cell In Selection

i = i + 1

OldSelection(i).Addr = cell.Address

OldSelection(i).Val = cell.Formula

Next cell

'Insertar 0 en la selección actual

Application.ScreenUpdating = False

Selection.Value = 0

'Especificar el nombre que aparecera en menu Deshacer

Application.OnUndo "Deshacer macro", "Deshacermacro"

End Sub

'--------------------------------------------------------------------------------

Sub Deshacermacro()

Dim i

' "Deshace el efecto de la macro

On Error GoTo Problem

Application.ScreenUpdating = False

OldWorkbook.Activate

OldSheet.Activate

' Restaurar la información guardada

For i = 1 To UBound(OldSelection)

Range(OldSelection(i).Addr).Formula = OldSelection(i).Val

Next i

Exit Sub

Problem:

MsgBox "No se puede deshacer"

End Sub

publicado

Para poder deshacer los cambios de una macro, primero se debe guardar el estado de la hoja o de los datos. Una vez ejecutada la macro que borra los datos, no se pueden recuperar.

Una opción sería que buscases entre los archivos temporales que va guardando Excel para casos de cierres inapropiados del libro. A lo mejor, con un poco de suerte lo puedes encontrar ahí. Ordena los archivos de la carpeta temporal por fecha y ve buscando por el día y la hora en que perdiste los datos.

Suerte!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      29

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    2    1

  • Crear macros Excel

  • Mensajes

    • Que tal nuevamente,  adjunto una solución alternativa: =MAX(A:.A)-BYROW(F4:.AK20,LAMBDA(r,BUSCAR(2,1/(r=0),F3:.AK3))) Cabe mencionar que esta solución requiere funciones nuevas como RECORTAR.RANGO. CONTADOR FINAL (Solucion).xlsb
    • Buenos días,  espero se encuentren bien de salud compañeros, Favor me podrían ayuda con lo siguientes como se podría hacer cuando tengo una tabla dinámica que  amedida que se aumente las columnas fechas con data un formula que se coloco al final busque o analice siempre la ultima fila y columna de la fecha. Coloco un ejemplo
    • @JSDJSD Excelentes, GRACIAS POR TU SOPORTE , me ayudo demasiado es exactamente lo que quería. 5 ESTRELLAS
    • 'Opción 1 Sub FiltrarSKUPorFecha(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim diccionarioSKU As Object Dim listaEliminar As Object Dim fechaActual As String, fechaSiguiente As String Dim f As Variant With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Crear diccionarios para comparar SKU y almacenar filas a eliminar Set diccionarioSKU = CreateObject("Scripting.Dictionary") Set listaEliminar = CreateObject("Scripting.Dictionary") ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then diccionarioSKU.RemoveAll ' Limpiar el diccionario antes de llenarlo ' Guardar los SKU de la fecha siguiente (solo de la siguiente) For f = fila + 1 To ultimaFila If .Cells(f, 1).Value <> fechaSiguiente Then Exit For diccionarioSKU(.Cells(f, 2).Value) = 1 Next f ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Solo eliminar si el SKU no está en la fecha siguiente If Not diccionarioSKU.exists(.Cells(f, 2).Value) Then listaEliminar(f) = 1 ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar.keys .Rows(f).Delete Next End With MsgBox "Completado correctamente.", vbInformation End Sub 'Opción 2 Sub FiltrarSKUPorFecha1(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim listaEliminar As Collection Dim fechaActual As String, fechaSiguiente As String Dim f As Variant, i As Long Dim SKUExiste As Boolean With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Inicializar la colección para marcar las filas a eliminar Set listaEliminar = New Collection ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Comprobar si el SKU está en la fecha siguiente SKUExiste = False For i = fila + 1 To ultimaFila If .Cells(i, 1).Value <> fechaSiguiente Then Exit For If .Cells(i, 2).Value = .Cells(f, 2).Value Then SKUExiste = True Exit For End If Next i ' Si el SKU no se encuentra en la fecha siguiente, marcar para eliminar If Not SKUExiste Then listaEliminar.Add f ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar .Rows(f).Delete Next f End With MsgBox "Completado correctamente.", vbInformation End Sub   TABLA ELIMINAR.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.