¿Necesito borrar varias celdas cada vez que mi macro graba? ¿Es posible?

Tengo una Macro que el usuraio Dante Amor me ayudo a realizarla, esta lo que hace  es grabar unos datos en un indice y luego pregunta si quiero guardar en un libro nuevo, tickeo que si y me graba en el libro nuevo, no si antes grabar el libro que estoy utilizando, con las modificaciones que le he hecho, es por en este punto que quiero que la macro me borre unas celdas antes de grabar, es posible que haga esto??

Dejo con ustedes mi Macro:

Sub GUARDAR()
'
' GUARDAR Macro
'
Dim i As Long
Dim FinalRow As Long
Dim NUMEROCOT As Long
Dim Fila As Long
Dim bExiste As Boolean
Dim FechaEmision As Date
Dim Contacto As String
Dim LibroNuevo As String
Dim LibroDestino As String
Dim sNumeroOC As String
Dim NombreHoja As String
Dim Archivo As String
Dim Empresa As String
Dim Telefono As String
Dim Correo As String

'
Archivo = Sheets("GENERAL").Range("Q2").Value
NombreHoja = ActiveSheet.Name
NUMEROCOT = Sheets("GENERAL").Range("E3").Value
FechaEmision = Sheets("General").Range("E4").Value
Contacto = Sheets("General").Range("B3").Value
Empresa = Sheets("General").Range("B4").Value
Telefono = Sheets("General").Range("E5").Value
Correo = Sheets("General").Range("B5").Value
FinalRow = Sheets("Indice").Cells(Rows.Count, 1).End(xlUp).Row
bExiste = False
For i = 2 To FinalRow
If Sheets("Indice").Range("a" & i).Value = NUMEROCOT Then
Fila = i
bExiste = True
Exit For
End If
Next
If bExiste = False Then
Fila = FinalRow + 1
End If
Sheets("Indice").Range("a" & Fila).Value = NUMEROCOT
Sheets("Indice").Range("b" & Fila).Value = Contacto
Sheets("Indice").Range("c" & Fila).Value = Empresa
Sheets("Indice").Range("d" & Fila).Value = Telefono
Sheets("Indice").Range("e" & Fila).Value = Correo
Sheets("Indice").Range("f" & Fila).Value = FechaEmision
MsgBox "Se ha guardado '" & Archivo & "' en hoja INDICE"

'
Archivo = Sheets("GENERAL").Range("p2").Value

Confirmacion = MsgBox("Desea guardar '" & Archivo & "', como archivo nuevo?", _
vbQuestion + vbYesNo, "IHL")
Application.ScreenUpdating = False
If Confirmacion = vbYes Then
ActiveWorkbook.Save
'
ChDir "C:\Users\Silviom\Dropbox\IHL (1)\IHL Silvio\cotizaciones\excel"
Dim Ruta As String
Ruta = Application.GetSaveAsFilename([Q2]) & (".xls")
If Left(Ruta, 5) <> "Falso" Then
ActiveWorkbook.SaveAs Filename:=Ruta
End If
Else
End If
End Sub

1 Respuesta

Respuesta
1

Te regrese la macro actualizada, marqué el lugar donde tienes que poner la celdas a borrar antes de guardar.

No mencionaste de qué hoja ni cuáles celdas, así que te puse unos ejemplos para que cambies los datos con las celdas que necesitas.

Sub GUARDAR()
'
' GUARDAR Macro
'
Dim i As Long
Dim FinalRow As Long
Dim NUMEROCOT As Long
Dim Fila As Long
Dim bExiste As Boolean
Dim FechaEmision As Date
Dim Contacto As String
Dim LibroNuevo As String
Dim LibroDestino As String
Dim sNumeroOC As String
Dim NombreHoja As String
Dim Archivo As String
Dim Empresa As String
Dim Telefono As String
Dim Correo As String
'
Archivo = Sheets("GENERAL").Range("Q2").Value
NombreHoja = ActiveSheet.Name
NUMEROCOT = Sheets("GENERAL").Range("E3").Value
FechaEmision = Sheets("General").Range("E4").Value
Contacto = Sheets("General").Range("B3").Value
Empresa = Sheets("General").Range("B4").Value
Telefono = Sheets("General").Range("E5").Value
Correo = Sheets("General").Range("B5").Value
FinalRow = Sheets("Indice").Cells(Rows.Count, 1).End(xlUp).Row
bExiste = False
For i = 2 To FinalRow
If Sheets("Indice").Range("a" & i).Value = NUMEROCOT Then
Fila = i
bExiste = True
Exit For
End If
Next
If bExiste = False Then
Fila = FinalRow + 1
End If
Sheets("Indice").Range("a" & Fila).Value = NUMEROCOT
Sheets("Indice").Range("b" & Fila).Value = Contacto
Sheets("Indice").Range("c" & Fila).Value = Empresa
Sheets("Indice").Range("d" & Fila).Value = Telefono
Sheets("Indice").Range("e" & Fila).Value = Correo
Sheets("Indice").Range("f" & Fila).Value = FechaEmision
MsgBox "Se ha guardado '" & Archivo & "' en hoja INDICE"
'
Archivo = Sheets("GENERAL").Range("p2").Value
Confirmacion = MsgBox("Desea guardar '" & Archivo & "', como archivo nuevo?", _
vbQuestion + vbYesNo, "IHL")
Application.ScreenUpdating = False
If Confirmacion = vbYes Then
'Celdas a borrar
    Sheets("GENERAL").Range("F1").ClearContents     'borrar una celda
    Sheets("GENERAL").Range("D6:G6").ClearContents  'borrar un rango en la misma fila
    Sheets("GENERAL").Range("D7:D10").ClearContents 'borrar un rango en la misma columna
    Sheets("GENERAL").Range("D6:G10").ClearContents 'borrar un rango
'fin borrar celdas
'
ActiveWorkbook.Save
'
ChDir "C:\Users\Silviom\Dropbox\IHL (1)\IHL Silvio\cotizaciones\excel"
Dim Ruta As String
Ruta = Application.GetSaveAsFilename([Q2]) & (".xls")
If Left(Ruta, 5) <> "Falso" Then
ActiveWorkbook.SaveAs Filename:=Ruta
End If
Else
End If
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Dante

        Te comento que el la linea lo que hizo fue borrar la información del cuadro en el archivo que se creo con el nombre "Archivo", en el archivo que queda, que se llama cotizador, queda con la información en las celdas. si lo corro antes de la linea de guardado, lo que hace es borrar la info en los dos archivos. 

Para explicar, lo que necesito es que en el archivo de origen se borren las celdas para que una vez lo habrá de nuevo no tenga que borrar dicha información para sacar una cotización, pero al contrario, en el archivo que se crea necesito que la información que ingreso se mantenga.

Espero me explique. 

Prueba con lo siguiente:

Sub GUARDAR()
'
' GUARDAR Macro
'
Dim i As Long
Dim FinalRow As Long
Dim NUMEROCOT As Long
Dim Fila As Long
Dim bExiste As Boolean
Dim FechaEmision As Date
Dim Contacto As String
Dim LibroNuevo As String
Dim LibroDestino As String
Dim sNumeroOC As String
Dim NombreHoja As String
Dim Archivo As String
Dim Empresa As String
Dim Telefono As String
Dim Correo As String
'
Archivo = Sheets("GENERAL").Range("Q2").Value
NombreHoja = ActiveSheet.Name
NUMEROCOT = Sheets("GENERAL").Range("E3").Value
FechaEmision = Sheets("General").Range("E4").Value
Contacto = Sheets("General").Range("B3").Value
Empresa = Sheets("General").Range("B4").Value
Telefono = Sheets("General").Range("E5").Value
Correo = Sheets("General").Range("B5").Value
FinalRow = Sheets("Indice").Cells(Rows.Count, 1).End(xlUp).Row
bExiste = False
For i = 2 To FinalRow
    If Sheets("Indice").Range("a" & i).Value = NUMEROCOT Then
    Fila = i
    bExiste = True
    Exit For
    End If
Next
If bExiste = False Then
    Fila = FinalRow + 1
End If
Sheets("Indice").Range("a" & Fila).Value = NUMEROCOT
Sheets("Indice").Range("b" & Fila).Value = Contacto
Sheets("Indice").Range("c" & Fila).Value = Empresa
Sheets("Indice").Range("d" & Fila).Value = Telefono
Sheets("Indice").Range("e" & Fila).Value = Correo
Sheets("Indice").Range("f" & Fila).Value = FechaEmision
MsgBox "Se ha guardado '" & Archivo & "' en hoja INDICE"
'
Archivo = Sheets("GENERAL").Range("p2").Value
Confirmacion = MsgBox("Desea guardar '" & Archivo & "', como archivo nuevo?", _
vbQuestion + vbYesNo, "IHL")
Application.ScreenUpdating = False
If Confirmacion = vbYes Then
    '
    '
    ChDir "C:\Users\Silviom\Dropbox\IHL (1)\IHL Silvio\cotizaciones\excel"
    Dim Ruta As String
    Ruta = Application.GetSaveAsFilename([Q2]) & (".xls")
    If Left(Ruta, 5) <> "Falso" Then
        ActiveWorkbook.SaveCopyAs Filename:=Ruta
    End If
    '
    'borrar celdas
    '
    ActiveWorkbook.Save
Else
End If
End Sub

Pon las celdas que quieras borrar en la parte que dice "borrar celdas


Saludos. Dante Amor

Recuerda valorar la respuesta.

Se acerca, paso algo que me gusto mucho, es que antes cuando grababa quedaba abierto el archivo con el nombre nuevo y con los datos ingresados, con esta modificación lo que se produce es que se borra la info que requiero, me deja el cotizador abierto, como te decía me gusto mucho, pero me cerro el archivo nuevo, es posible generar una linea que abra el archivo recientemente creado y así me deja el cotizador abierto con la info borrado como le pido y ademas me deje el nuevo archivo abierto para que siga haciendo las correcciones antes de enviarlo al cliente??

Gracias Dante como siempre. 

Después de esta línea

ActiveWorkbook.SaveCopyAs Filename:=ruta

Agrega esta:

Workbooks. Open ruta

Como siempre ¡Gracias! Totales

Dante

Una consulta, la línea de ClearContents no se puede activar en celdas combinadas, ¿por qué? Tiene solución.

Tengo una celda combinada en B3 a C3y otras de G13 a J13.

Sheets("GENERAL").Range("F1").ClearContents 

Prueba así:

Sheets("GENERAL"). Range("F1") = ""

Recuerda crear una pregunta nueva por cada petición.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas