根据单元格输入设置范围,命名范围

时间:2019-01-22 16:08:23

标签: excel vba named-ranges

VBA的新手。我正在尝试将值从源电子表格复制到目标电子表格。在目标电子表格中,我有一个导入设置表,该表的一列包含要从源电子表格复制的命名范围,我也有一列,包含复制数据的目标位置的命名范围。

在定义目标范围和源范围时遇到麻烦。我希望脚本遍历每一行并将目标和源范围设置为在导入设置表中相关列中指定的命名范围,并将数据从源复制到目标。

任何帮助将不胜感激。

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

结束子

1 个答案:

答案 0 :(得分:1)

我认为将名称作为字符串而不是范围对象使用会更容易。

尝试一下:

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

请注意,我更改了一些变量名,并将非法的Range(row, column)更改为Cells(row, column)