VBA de Excel: reproducir un formato

Resuelto

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. Colaborador

    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. 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í.

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