Excel 无法填充命名范围

Excel 无法填充命名范围,excel,vba,Excel,Vba,我遇到了一个我自己无法解决的问题,我想知道这里是否有人能教育我我做错了什么?该代码的目的是将一行信息(约60个单元格)传输到另一个工作表 - 为了更加清楚(我的最后一个问题很难理解): RProjekt包含以下单元:E6;F15;F17;F19;F21;F23;I6;I8;I10;I15;I17;I19;I21;I23 RBkriterier包含以下单元格:F30:K30;F31:K31;F32:K32;F33:K33;F34:K34 冲洗器包含以下单元: F45:K45;F46:K46;F47

我遇到了一个我自己无法解决的问题,我想知道这里是否有人能教育我我做错了什么?该代码的目的是将一行信息(约60个单元格)传输到另一个工作表

-

为了更加清楚(我的最后一个问题很难理解):

RProjekt包含以下单元:E6;F15;F17;F19;F21;F23;I6;I8;I10;I15;I17;I19;I21;I23

RBkriterier包含以下单元格:F30:K30;F31:K31;F32:K32;F33:K33;F34:K34

冲洗器包含以下单元: F45:K45;F46:K46;F47:K47;F48:K48;F49:K49

-

我希望下面的代码说明了我要实现的目标。有什么建议吗?谢谢你的帮助

-


这里比较了非工作(对于循环计数器)和工作(对于每个循环)方法,从单个连续范围填充合并的非连续范围:

Sub Tester()

    Dim rngMerged As Range, rngRow As Range, c As Range
    Dim i As Long

    'Yellow and grey areas
    Set rngMerged = Application.Union(Range("B2:B6"), Range("D2:D6"))

    'Green-shaded area
    Set rngRow = Range("F2:O2")

    'Here we're trying to fill rngMerged cell-by-cell from rngRow...

    'Method 1 - does not work as expected
    For i = 1 To rngMerged.Cells.Count
        rngMerged.Cells(i).Value = rngRow.Cells(i).Value
    Next i

    'Method 2 - fills as expected
    i = 0
    For Each c In rngMerged.Cells
        i = i + 1
        c.Value = rngRow.Cells(i).Value
    Next c

End Sub
方法1结果:使用For循环计数器,我们只填充合并范围的第一个区域(然后随着循环的进行扩展到该区域之外)

方法2结果:在合并范围内循环的每个方法的
按预期命中每个单元格,我们可以使用
i


注意:合并范围的顺序将影响每个
循环中
单元格的循环顺序,因此您可以控制合并区域中的单元格如何映射到
项目行
源范围中的单元格

这里比较了非工作(对于循环计数器)和工作(对于每个循环)从单个连续范围填充合并的非连续范围的方法:

Sub Tester()

    Dim rngMerged As Range, rngRow As Range, c As Range
    Dim i As Long

    'Yellow and grey areas
    Set rngMerged = Application.Union(Range("B2:B6"), Range("D2:D6"))

    'Green-shaded area
    Set rngRow = Range("F2:O2")

    'Here we're trying to fill rngMerged cell-by-cell from rngRow...

    'Method 1 - does not work as expected
    For i = 1 To rngMerged.Cells.Count
        rngMerged.Cells(i).Value = rngRow.Cells(i).Value
    Next i

    'Method 2 - fills as expected
    i = 0
    For Each c In rngMerged.Cells
        i = i + 1
        c.Value = rngRow.Cells(i).Value
    Next c

End Sub
方法1结果:使用For循环计数器,我们只填充合并范围的第一个区域(然后随着循环的进行扩展到该区域之外)

方法2结果:在合并范围内循环的每个
方法的
按预期命中每个单元格,我们可以使用
i


注意:合并范围的顺序将影响每个
循环中
单元格的循环顺序,因此您可以控制合并区域中的单元格如何映射到
项目行
源范围中的单元格

只是瞎拍:将i=1的“计数”改为所有投影信息.Cells.Count,将i=1的“计数”改为所有投影信息.Areas.Count?我想你的问题是你通过
联合创建了一个新的范围对象。您是否正在尝试单步遍历此新范围对象的每个单元格,而不是使用
区域
?>
对于所有项目信息中的每个cl………
对于每个
的下一个cl
是可靠地逐步通过合并范围的单元格的唯一方法-如果使用循环计数器,则最终将访问不在合并范围内的单元格(它将开始计算第一个
区域附近的单元格,但不包含在其中)@timwilliams,太好了。谢谢。我显然需要阅读更多关于区域的内容。您有没有其他代码的建议?“projectRow”是另一张工作表上表格中的一个特定行,它包含大约60个单元格。我不知道如何循环遍历“projectRow”上的所有单元格没有使用索引。@JvdV,请参见上文。我无法在一条评论中标记2个用户。这只是一个盲点:将“I=1”更改为“AllProjectInformation.Cells.Count”,将“I=1”更改为“AllProjectInformation.Areas.Count”?我想你的问题是你通过
UNION
创建了一个新的range对象。你不想一步一步地检查每个cel吗对于所有项目信息中的每个cl,使用此新范围对象的l,而不是使用
区域
?>
。…..
…下一个cl
,这是可靠地逐步通过合并范围的单元格的唯一方法-如果使用循环计数器,则最终将访问不在合并范围内的单元格(它将开始计算第一个
区域附近的单元格,但不包含在其中)@timwilliams,太好了。谢谢。我显然需要阅读更多关于区域的内容。您有没有其他代码的建议?“projectRow”是另一张工作表上表格中的一个特定行,它包含大约60个单元格。我不知道如何在不使用索引的情况下循环“projectRow”上的所有单元格。@JvdV,请参见上文。我无法在一条注释中标记2个用户。非常感谢。非常优雅,我非常欣赏对“union”行为的解释因此,我可以避免今后出现类似的错误。请注意,您是否建议尽可能多地使用“应用程序”(如适用)对于更稳定的代码和执行?我可能不会在任何地方都使用应用程序-通常仅用于联合/相交、屏幕更新、计算设置等,以及在VBA中使用工作表函数。非常感谢。非常优雅,我非常欣赏对“联合”行为的解释因此,我可以避免今后出现类似的错误。请注意,您是否建议尽可能多地使用“应用程序”(如适用)对于更稳定的代码和执行?我可能不会在任何地方都使用应用程序-通常仅用于联合/相交、屏幕更新、计算设置等,以及在VBA中使用工作表函数时。