Problemas con macro

Buenos días, espero que estés bien.
Vieras que tengo esta macro pero me da problemas y no se como solucionarlo, estoy aprendiendo a hacerlas así que si hay algo malo te agradecería me lo indicaras:
Sub copiar_elasticidades_personalizadas_Ventas()
'
' copiar_elasticidades_personalizadas Macro
' Macro grabada el 26/04/2002 por RETANAGER
Dim stexto As String
Dim sotro As String
stexto = "Proceso Incompleto, no todos los bienes tienen sus elasticidades"
sotro = " Si la elasticidad es cero el efecto en la cantidad es nulo"
sefecto = " Aún asi, Desea continuar??"
If Range("n_e_person") = 3018 Then
xxx:
ActiveWorkbook.Unprotect "CD41ib"
Application.GoTo Reference:="elast_pres2"
Selection.Copy
Sheets("ventas").Visible = True
ActiveSheet.Unprotect "v"
Application.GoTo Reference:="elast_pres1"
'ActiveSheet. Paste si es un pegar normal es este y se desactivan los que están a los lados
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
ActiveSheet.Protect "v", DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("ventas").Visible = False
Application.GoTo Reference:="señal"
ActiveWorkbook.Protect "CD41ib", structure:=True, Windows:=False
Else
If MsgBox(stexto & vbNewLine & sotro & vbNewLine & sefecto, vbYesNo + vbInformation) = vbYes Then GoTo xxx
If vbNo Then End
End If
End Sub
Esa es lo que quería era que si lo que esta en una celda de nombre n_e_person es igual a 3018 haga la aplicación y sino que pregunte si desea continuar, pero me da problemas a la hora de proteger, si le quito esas lineas funciona bien pero al incluirlas me da problema, ¿me podes ayudar?, y gracias pro contestarme mis consultas

1 Respuesta

Respuesta
1
OK, probé tu macro, aunque había notado una omisión en el código posterior a hacer visible la hoja oculta: Faltó seleccionarla, para luego poder desprotegerla.
Después encontré un problema al pegar, tal vez debido a que el rango pegado antes queda seleccionado y puede ser que el nuevo rango a pegar tenga un tamaño distinto. Esto, claro está, dependerá mucho de cómo estén definidos en tu archivo los rangos "elast_pres1" y "elast_pres2".
Pero el problema estaba en la falta de selección de la hoja "ventas"
El siguiente código es el tuyo con las dos correcciones propuestas. Pruébalo y dime si funcionó también para ti.
Un abrazo grande!
Fer
Sub copiar_elasticidades_personalizadas_Ventas()
'
' copiar_elasticidades_personalizadas Macro
' Macro grabada el 26/04/2002 por RETANAGER
Dim stexto As String
Dim sotro As String
stexto = "Proceso Incompleto, no todos los bienes tienen sus elasticidades"
sotro = " Si la elasticidad es cero el efecto en la cantidad es nulo"
sefecto = " Aún asi, Desea continuar??"
If Range("n_e_person") = 3018 Then
xxx:
ActiveWorkbook.Unprotect "CD41ib"
Application.GoTo Reference:="elast_pres2"
Selection.Copy
Sheets("ventas").Visible = True
Sheets("ventas").Select '<-- /// Faltaba este comando
ActiveSheet.Unprotect "v"
Application.GoTo Reference:="elast_pres1"
'ActiveSheet.Paste si es un pegar normal es este y se desactivan los que estan a los lados
Selection.PasteSpecial Paste:=xlValues
ActiveCell.Select '<-- /// Faltaba este comando
Application.CutCopyMode = False
ActiveSheet.Protect "v", DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("ventas").Visible = False
Application.GoTo Reference:="señal"
ActiveWorkbook.Protect "CD41ib", structure:=True, Windows:=False
Else
If MsgBox(stexto & vbNewLine & sotro & vbNewLine & sefecto, vbYesNo + vbInformation) = vbYes Then GoTo xxx
If vbNo Then End
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas