Excel VBA在指定范围内插入行[已解决]

Excel VBA在指定范围内插入行[已解决],excel,vba,Excel,Vba,我正在用Excel 2019编写一个VBA脚本,该脚本将生成一个仪表板。我的程序的第一步是从一个命名(DonneesBrutes)范围中提取数据,用一些过滤器将它们复制到另一个范围(donneesanees) 其工作方式如下: 它测试数据是否与过滤器对应 它将线复制到范围内 它将在复制的行之后的donneesannes中插入一行 但我的问题是:这些行实际上并没有插入,而且DonneesAnnees仍然有3行。这会导致基于此范围的公式出现问题(使用名称DonneesAnnees编写,因为根据过

我正在用Excel 2019编写一个VBA脚本,该脚本将生成一个仪表板。我的程序的第一步是从一个命名(
DonneesBrutes
)范围中提取数据,用一些过滤器将它们复制到另一个范围(
donneesanees

其工作方式如下:

  • 它测试数据是否与过滤器对应
  • 它将线复制到范围内
  • 它将在复制的行之后的
    donneesannes
    中插入一行
但我的问题是:这些行实际上并没有插入,而且
DonneesAnnees
仍然有3行。这会导致基于此范围的公式出现问题(使用名称
DonneesAnnees
编写,因为根据过滤器的不同,行数不同,并且文档不断填充)

这是我的密码:

For Each ligne In Worksheets(1).Range("DonneesBrutes").Rows
    sDateLue = ligne.Cells(1, 3).Text                         'Reading the different data that will be filtred
    intervenantLu = ligne.Cells(1, 10).Text
    coteLu = ligne.Cells(1, 8).Text
    If sDateLue <> vbNullString Then
        sDateLue = Split(sDateLue, "/")(2)
        dateLue = CInt(sDateLue)
        If dateLue = consAnnee And UCase(intervenantLu) Like UCase(sConsTete) And coteLu Like sConsCote Then
            ligne.Copy Destination:=Worksheets("GRAPHIQUE_DATA").Range("DonneesAnnees").Rows(ligneActive)
            ligneActive = ligneActive + 1
            Worksheets("GRAPHIQUE_DATA").Range("DonneesAnnees").Rows(ligneActive).Insert
        End If
    End If
Next
我试着让DonneesAnnees
2行、3行或4行,但不起作用

编辑:我试过这个:

'First :
Worksheets("GRAPHIQUE_DATA").Range("DonneesAnnees") = Union(Worksheets("GRAPHIQUE_DATA").Range("DonneesAnnees"), Worksheets("GRAPHIQUE_DATA").Range(Worksheets("GRAPHIQUE_DATA").Cells(ligneActive + 1, 1), Worksheets("GRAPHIQUE_DATA").Cells(ligneActive + 1, 8)))

'Second :    (returns a compilation error)
Set Worksheets("GRAPHIQUE_DATA").Range("DonneesAnnees") = Union(Worksheets("GRAPHIQUE_DATA").Range("DonneesAnnees"), Worksheets("GRAPHIQUE_DATA").Range(Worksheets("GRAPHIQUE_DATA").Cells(ligneActive + 1, 1), Worksheets("GRAPHIQUE_DATA").Cells(ligneActive + 1, 8)))

'Third :     (also doesn't compile)
Worksheets("GRAPHIQUE_DATA").Range("DonneesAnnees").Set(Union(Worksheets("GRAPHIQUE_DATA").Range("DonneesAnnees"), Worksheets("GRAPHIQUE_DATA").Range(Worksheets("GRAPHIQUE_DATA").Cells(ligneActive + 1, 1), Worksheets("GRAPHIQUE_DATA").Cells(ligneActive + 1, 8))))
编辑:

以下是我使用的解决方案:

Names.Item("DonneesAnnees").RefersTo = Names.Item("DonneesAnnees").RefersToRange.Resize(ligneActive, 13)

请参阅
.Union
方法。试着像这样使用它
Set YourNamedRange=Union(YourNamedRange,YourRangeToAdd)
谢谢,但我尝试在行首使用
Set
或在行尾添加
。Set
,但它返回了一个错误。所以我尝试了以下方法:
工作表(“GRAPHIQUE_数据”).Range(“Donneesannes”)=(Union(工作表(“GRAPHIQUE_数据”).Range(“Donneesanes”)、工作表(“GRAPHIQUE_数据”).Range(工作表(“GRAPHIQUE_数据”).Cells(ligneActive+1,1)、工作表(“GRAPHIQUE_数据”).Cells(ligneActive+1,8))
但仍然不起作用错误消息是什么?
Names.Item("DonneesAnnees").RefersTo = Names.Item("DonneesAnnees").RefersToRange.Resize(ligneActive, 13)