Establecer el intervalo basado en una entrada de célula que un rango con nombre

Pregunta hecha: hace 8 meses Ultima actividad: hace 8 meses
up 0 down

Un poco de novato en VBA. Estoy tratando de copiar los valores de una hoja de cálculo de origen a una hoja de cálculo de destino. En la hoja de cálculo de destino Tengo una hoja de configuración de importación que tiene una columna que contiene los rangos con nombre que desea copiar la hoja de cálculo de origen y también tengo una columna que contiene los rangos con nombre para el destino de los datos copiados.

Tengo problemas con la definición de la gama rango de destino y de origen. Me gustaría que el script consiguió a través de cada fila y establecer el destino y la fuente de los rangos de los rangos con nombre especificados en las columnas correspondientes en la hoja de configuración de importación y copiar los datos desde el origen al destino.

Cualquier ayuda será apreciada.

Public Sub grabIRR()   
Dim temp_workbook As Excel.Workbook
Dim filepath As String
Dim filename As String
Dim source_range As String
Dim dest_range As String
Dim IRR_Row As Integer

Application.Calculation = xlCalculationManual
Set temp_workbook = Workbooks.Open(filename:=link_to_IRR, ReadOnly:=True)
Application.Calculation = xlCalculationManual

shtPrivateEquity.Cells.ClearContents

For IRR_Row = 15 To 110
    dest_range = Worksheets("import_settings").Range(IRR_Row, 11).Value.RefersToRange
    source_range = Worksheets("import_settings").Range(IRR_Row, 9).Value.RefersToRange
    shtPrivateEquity.Range(dest_range).Value = temp_workbook.Names(source_range).RefersToRange.Value
Next IRR_Row
On Error GoTo 0

Application.Calculation = xlCalculationAutomatic
temp_workbook.Close savechanges:=False

End Sub

1 respuesta

up 1 down accepted

Creo que va a ser más fácil trabajar con los nombres como cadenas en lugar de objetos de rango.

Prueba esto:

For IRR_Row = 15 To 110
    dest_range_name = Worksheets("import_settings").Cells(IRR_Row, 11).Value
    source_range_name = Worksheets("import_settings").Cells(IRR_Row, 9).Value
    shtPrivateEquity.Range(dest_range_name).Copy Destination := temp_workbook.Range(source_range_name)
Next IRR_Row

Tenga en cuenta que he cambiado algunos nombres de variables y cambió la ilegal Range(row, column) a Cells(row, column).