Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
在Excel中添加行时,是否有方法自动填充行中的单元格_Excel_Vba - Fatal编程技术网

在Excel中添加行时,是否有方法自动填充行中的单元格

在Excel中添加行时,是否有方法自动填充行中的单元格,excel,vba,Excel,Vba,我对excel不太了解,尤其是VBA。但是我需要写一些东西(例如宏)来实现以下功能: 如果有人插入一行并填充该行的前4个单元格,则需要对行进行排序(我有一个宏用于排序,称为“sortingmacro”),然后需要通过复制其上方的单元格来填充第7和第8单元格 例如,如果我在第四行中插入一行并填充A4、B4、C4和D4,则需要将G3复制到G4,将H3复制到H4。(当然,在分类之后) 感谢您的帮助 编辑: 我在要复制的单元格中有公式。第一行的公式(根据排序的最上面一行)是不同的,其他所有的公式都是相同

我对excel不太了解,尤其是VBA。但是我需要写一些东西(例如宏)来实现以下功能:

如果有人插入一行并填充该行的前4个单元格,则需要对行进行排序(我有一个宏用于排序,称为“sortingmacro”),然后需要通过复制其上方的单元格来填充第7和第8单元格

例如,如果我在第四行中插入一行并填充A4、B4、C4和D4,则需要将G3复制到G4,将H3复制到H4。(当然,在分类之后)

感谢您的帮助

编辑:
我在要复制的单元格中有公式。第一行的公式(根据排序的最上面一行)是不同的,其他所有的公式都是相同的。

所以在页面上放置一个按钮,然后转到代码(单击事件)。在这种情况下,使用sortingmacro对所有行进行排序。然后你只需要做一些简单的事情,比如:

Rows(4).Cells(1,7).Formula = Rows(3).Cells(1,7).Formula
Rows(4).Cells(1,8).Formula = Rows(3).Cells(1,8).Formula

当然,这里没有硬编码4,而是为行设置了一个变量(确保并在排序后确定它)。

因此在页面上放置一个按钮,然后转到代码(单击事件)。在这种情况下,使用sortingmacro对所有行进行排序。然后你只需要做一些简单的事情,比如:

Rows(4).Cells(1,7).Formula = Rows(3).Cells(1,7).Formula
Rows(4).Cells(1,8).Formula = Rows(3).Cells(1,8).Formula

当然,不必在其中硬编码4,而是为行设置了一个变量(确保并在排序后确定它)。

您可以通过
工作表\u Change
-事件查找单元格是否已更改

Private Sub Worksheet_Change(ByVal Target As Range)
    Debug.Print Target.Address
End Sub
输出(如下所示):


因此,如果更改了匹配的单元格,请查找行中的其他3个单元格并启动宏。

您可以通过
工作表\u Change
-事件查找单元格是否已更改

Private Sub Worksheet_Change(ByVal Target As Range)
    Debug.Print Target.Address
End Sub
输出(如下所示):


因此,如果更改了匹配的单元格,请查找行中的其他3个单元格,然后启动宏。

谢谢。但是,当插入一行时,它能自动完成吗?我知道这是一个愚蠢的问题,但我的老板想it@bliss,如何插入?你可以像cularis建议的那样使用工作表更改事件,并对插入的单元格进行测试(取决于插入的方式)。为什么我需要写第(4)行。单元格(1,7)为什么不写第(4)行。单元格(7)?@bliss也可以,我只是没有把事情搞紧。此外,您可能会使用与Rows()不同的范围,在这种情况下,Cells()可能需要两个索引。再次感谢。如果我需要对公式进行硬编码,我该怎么写呢?我尝试了行(a)、单元格(1,7)=“WORKDAY(INDIRECT(地址(2;匹配(“BaşlangıçTarihi”;A1:M1;0)));(INDIRECT(地址(ROW();匹配(“Süre”;A1:M1;0)))/K2”,但它不起作用。我尝试了行(a).Cells(1,7)=WorksheetFunction.Workday(间接的(地址(2;匹配(“BaşlangıçTarihi”;A1:M1;0));(间接的(地址(行();匹配(“Süre”;A1:M1;0))/K2),但也不起作用。我试图在我使用的每一个公式前编写工作表函数和应用程序,但两个公式都不起作用:(谢谢。但是当插入一行时,它能自动完成吗?我知道这是一个愚蠢的问题,但我的老板想要it@bliss,如何插入?您可以像cularis建议的那样使用工作表更改事件,并对插入的单元格进行测试(取决于插入方式)。为什么我需要写入行(4)。单元格(1,7)为什么不写入行(4)。单元格(7)?@bliss,那也行,我只是没有把事情搞紧。你可能会使用不同于Rows()的范围,在这种情况下,Cells()可能需要两个索引。再次感谢。如果我需要硬编码公式,我怎么写呢?我试过Rows(a)。Cells(1,7)=“WORKDAY(INDIRECT(ADDRESS(2;MATCH(“BaşlangıçTarihi;A1:M1;0));(INDIRECT(ADDRESS))(ROW();MATCH(“Süre;A1:M1;0)))/K2)不起作用。我尝试了ROW(a).Cells(1,7)=WorksheetFunction.Workday(间接(地址(2;MATCH(“BaşlangıTarihi”;A1:M1;0));(间接(地址(ROW();MATCH(“Süre;A1:M1;0)))/K2)但它也不起作用。我试着在我使用的每个公式前编写工作表函数和应用程序,但两个都不起作用:(