es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo copiar un rango de una hoja a otras hojas?

Estoy tratando de crear una macro que copie un rango específico (CA1:CZ99) de “Sheet A” a muchas otras hojas. Los nombres de las otras hojas se basan en el valor de la columna F en “Sheet B”.

El código para copiar los datos es fácil de encontrar.

Worksheets("Sheet A").Range("CA1:CZ99").Copy Worksheets("Sheet X").Range("CA1")

Pero ¿cómo puedo hacer un bucle para realizar esta acción en todas las hojas basadas en la columna F?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para realizar la copia del rango determinado (CA1:CZ99) en todas las otras hojas basado en el valor de la columna F de “Hoja B”, puedes utilizar el siguiente código:

    Sub CopiarATodasLasHojas()
        Dim wsA As Worksheet, wsB As Worksheet, wsX As Worksheet
        Dim lastRow As Long, i As Long
        Set wsA = ThisWorkbook.Worksheets("Hoja A")
        Set wsB = ThisWorkbook.Worksheets("Hoja B")
        lastRow = wsB.Cells(wsB.Rows.Count, "F").End(xlUp).Row 'obtener la última fila en la columna F de "Hoja B"
        For i = 1 To lastRow
            Set wsX = Nothing 'restablecer la variable de hoja de cálculo
            On Error Resume Next
            Set wsX = ThisWorkbook.Worksheets(wsB.Range("F" & i).Value) 'intentar establecer la hoja de cálculo basada en el valor en la columna F
            On Error GoTo 0
            If Not wsX Is Nothing Then 'si la hoja de cálculo existe
                wsA.Range("CA1:CZ99").Copy wsX.Range("CA1") 'copiar el rango a la hoja de cálculo correspondiente
            End If
        Next i
    End Sub
    

    Este código utiliza un bucle para recorrer cada fila en la columna F de “Hoja B” e intenta establecer la hoja de cálculo basada en el valor de esa celda. Si la hoja de cálculo existe, el rango determinado se copia desde “Hoja A” a esa hoja de cálculo. Si la hoja de cálculo no existe, el bucle pasa a la siguiente fila.

    Ten en cuenta que este código asume que los valores en la columna F de “Hoja B” coinciden con los nombres de las otras hojas donde deseas copiar el rango determinado. Si este no es el caso, es posible que necesites modificar el código para que se ajuste a tu situación específica.

Comments are closed.