VBA de Excel: reproducir un formato

Resuelto
mikel831 Mensajes publicados 237 Fecha de registro   Estado Miembro Última intervención   -  
yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   -

Hola,
Deseo reproducir el formato de una zona de celdas Origen hacia otra zona de celdas Destino con el siguiente fragmento de código:
Sub Reproduire_MiseEnForme()
    Dim NJ, Origine, Destination As Range
    Set NJ = ActiveCell
    Set Origine = NJ.Offset(-1, 0) : NJ.Offset(-1, 8)
    Origine.Copy
    Set Destination = NJ : NJ.Offset(10,8)
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End Sub

La línea Set Origine da error: seguramente he escrito mal el rango de origen a copiar?
Probablemente lo mismo para la línea Set Destination ...


2 respuestas

  1. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Embajador 1 588
     

    hola,

    sin embargo ya has usado la función range(), ¿la has olvidado?

    Set Origine = range ( NJ.Offset(-1, 0) , NJ.Offset(-1, 8) )
    1
  2. Bruno83200_6929 Mensajes publicados 725 Fecha de registro   Estado Miembro Última intervención   170
     

    Hola,


    Parece que tienes algunos errores en tu código en la definición de los rangos de origen y destino. Aquí tienes una versión corregida de tu código:

    Sub Reproduir_MiseEnForme()
        Dim NJ As Range, Origine As Range, Destination As Range
        
        'Definición de la celda activa como punto de partida
        Set NJ = ActiveCell
        
        'Definición del rango de origen (una celda arriba y 8 columnas a la derecha de NJ)
        Set Origine = NJ.Offset(-1, 0).Resize(1, 8)
        
        'Copiar el formato del rango de origen
        Origine.Copy
        
        'Definición del rango de destino (celda activa y 10 filas hacia abajo y 8 columnas a la derecha de NJ)
        Set Destination = NJ.Offset(10, 8)
        
        'Pegado especial del formato en el rango de destino
        Destination.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        
        'Desactivación del modo de copia
        Application.CutCopyMode = False
    End Sub
     

    Así.

    0
    1. mikel831 Mensajes publicados 237 Fecha de registro   Estado Miembro Última intervención   19
       

      ¡Gracias por tu respuesta!
      funciona correctamente si escribo: set Destination = NJ.Resize(10, 8)
      Atentamente, Mikel

      1