Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用“For Each”循环将公式添加到选择集之外的单元格_Vba_Excel - Fatal编程技术网

Vba 使用“For Each”循环将公式添加到选择集之外的单元格

Vba 使用“For Each”循环将公式添加到选择集之外的单元格,vba,excel,Vba,Excel,选择框可以出现在我的标题行下第二行下方的任何位置。我需要在选择范围内插入有效行数,然后在第102列的每个单元格中为新插入的行添加一个公式。我对“For Each”循环方法不太熟悉,但我知道我并不是在尝试将公式添加到选择的每个单元格中,只是在第102列中。例如: 标题行是第10行 代码执行时,选择单元格B13至C16 第13行第102列中的单元格获取公式=sumQ13:t13 第14行第102列中的单元格获取公式=sumq14:t14 第15行第102列中的单元格获取公式=sumq15:t15 第

选择框可以出现在我的标题行下第二行下方的任何位置。我需要在选择范围内插入有效行数,然后在第102列的每个单元格中为新插入的行添加一个公式。我对“For Each”循环方法不太熟悉,但我知道我并不是在尝试将公式添加到选择的每个单元格中,只是在第102列中。例如:

标题行是第10行 代码执行时,选择单元格B13至C16 第13行第102列中的单元格获取公式=sumQ13:t13 第14行第102列中的单元格获取公式=sumq14:t14 第15行第102列中的单元格获取公式=sumq15:t15 第16行第102列中的单元格获取公式=sumq16:t16 我还没来得及调整公式的代码,但这将是我的下一步。现在的问题是,我只能将公式放在第102列的最后一行,而不是102列的每一行

Private Sub AddRows()
    Dim HeaderRow as Integer

    HeaderRow=10 'define the header row

    With Selection
        If .Row > HeaderRow + 1 Then 'use only rows that are after the header row
            .EntireRow.Insert        'insert the rows 
            For Each Row In Selection.Rows
                .Cells(Row, 102).Value = "=sum($F19:$CW19)" '19 needs to match row number
            Next
        End If
    End With
End Sub

这是R1C1型公式的完美例子。差不多

.Cells(Row, 102).FormulaR1C1 = "=SUM(RC6:RC101)"
如果确实需要该值而不是公式,可以添加一行:

.Cells(Row, 102).Value = .Cells(Row, 102).Value
编辑 您可以在所有插入后立即将公式添加到第102列:

With Range("CX1:CX" & lastRow).SpecialCells(xlCellTypeBlanks)
    .FormulaR1C1 = "=SUM(RC6:RC101)"
End With

您肯定应该在模块顶部添加一个显式选项,并声明变量。使用row作为变量名确实是在找麻烦。row不应该是变量。我以为它是一个像.value或.formula这样的函数。如前所述,我不太熟悉如何为每种编程方法使用。也不知道如何使用选项显式和Goes在哪里谷歌为选项显式,并使用它。是的,您肯定使用row作为对象变量,但不应该这样做。为更清晰起见,请将其替换为r。添加显式选项后,编译。一个人应该始终编译他的代码。既然我不想使用row作为变量,那么如何将公式放置在与所选范围(不包括第102列)中的行相等的行中?您是否查看了我的编辑?与DragonSamu的结果类似,您的解决方案更简洁一些。然而,这不是我问题的重点。这是下一步。当前的问题是如何将公式添加到第102列的每个单元格中。这是不起作用的部分。我现在才发现,我目前正在做一些相对列定位,而不是绝对定位。编辑允许我做我要求的,以及下一步。非常感谢您在这个问题上提供的帮助。这在将行添加到表的中间时非常有效。有没有办法计算选择中的行数?我正在考虑这样一种情况,即我要将行添加到表的底部,并且需要将lastrow计数增加所添加的行数。很好。那么你现在应该接受我的回答。。。并始终使用选项显式-但是,由于我的低评级,它说了一些关于不能改变公众观看的投票或类似的事情,但我确实击中了向上箭头。Dang刚刚看到了复选标记…我以前怎么会错过呢。