Problema con mi macro Pegar

Anónimas
2020-02-17T21:48:57+00:00

Tengo una aplicación que identifica 27 casos independientes con características univocas

 La aplicación contiene 28 hojas, una para cada caso y una hoja pivote que sirve para crear cada caso, esta hoja pivote va modificando las variables respectivas que identifican cada caso y al concluir un caso, ese resultado se copia a la hoja correspondiente.

La copia puede ser en valores o con fórmulas. En mi aplicación utilizo la presentación de resultados tanto en valores como con fórmulas, esto me facilita mucho la detección de problemas y así resolverlos con más precisión. Para realizar la pega utilizo la variable Pegar y los procedimientos PegadosVal y PegadosAll

Al inicio de cada libro establezco con = 1 la variable Pegar, si deseo que los resultados se presenten solo en valores, y =2 si deseo lo contario. 

Para ello he generado el siguiente macro

Sub Pegar()

Pegar = 1

If Pegar = 1 Then

Pegar = "PegadosVal"

Else

Pegar = "PegadosAll"

End If

End Sub

 Al ejecutar el macro, en el resto de códigos de la aplicación me aparece un mensaje que dice: “Se esperaba un procedimiento no una variable” destacando la variable Pegar

Aunque no viene al caso, a continuación, adjunto los procedimientos mencionados

Sub PegadosVal()

Range("A1").Select

ActiveSheet.Paste

Selection.PasteSpecial Paste:=xlPasteValues

End Sub

Sub PegadosAll()

Range("A1").Select

ActiveSheet.Paste

End Sub

Muchisimas gracias por su amble atención

Jorge_548

Microsoft 365 y Office | Excel | Para la casa | Windows

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios
{count} votos

4 respuestas

Ordenar por: Muy útil
  1. Héctor Miguel 71,585 Puntos de reputación
    2020-02-17T22:12:23+00:00

    un nombre (en este caso "Pegar")...

    1. NO lo puedes compartir entre nombres de procedimientos y nombres de variables
    2. EVITA los que sean "reservados" por cualquier aspecto de la aplicación (ya lo entenderás)

    en tu caso...

    1. si ya lo tiene el procedimiento: Sub Pegar()
    2. NO lo puedes "usar" como variable: Pegar = 1
    0 comentarios No hay comentarios
  2. Anónimas
    2020-02-20T15:48:51+00:00

    Gracias Héctor, hice algunos cambios, que parecen tener lógica, pero al final me da el mismo mensaje, al reemplazar, en mi trabajo, el procedimiento PegadosVal con la variable Pegar.

    **Mensaje: "**Se esperaba un procedimiento no una variable” subrayando la variable Pegar

    Dim Peg As Integer, Pegar As Variant

    If Peg = 1 Then

        Pegar = "PegadosVal"

    ElseIf Peg = 2 Then

        Pegar = "PegadosAll"

    End If

    End Sub

    Ojalá me puedas ayudar,

    Jorge_548

    0 comentarios No hay comentarios
  3. Héctor Miguel 71,585 Puntos de reputación
    2020-02-20T18:03:04+00:00

    la parte de procedimiento que transcribes está incompleta y no refleja la situación a resolver

    1. que es lo que determina si el código "pega todo" o "solo valores" ???
    2. por que usas "activesheet.paste" (...) si existen métodos más cómodos ?
    3. en cual hoja están las celdas de origen (.copy) y en cual las de destino (.paste) ?

    si solo comentas "una parte" de la situación a resolver...

    solo puedes aspirar a obtener "una parte" de la (posible) solución

    2 personas han encontrado útil esta respuesta.
    0 comentarios No hay comentarios
  4. Anónimas
    2020-02-24T21:50:16+00:00

    Muchisimas gracias Héctor, con tu ayuda se resolvió el problema

    Jorge_548

    1 persona ha encontrado útil esta respuesta.
    0 comentarios No hay comentarios