我可以使用什么公式插入x行,其中x是两个文本框响应之间的差异?

我正在创build一个用户窗体,将为用户形成一个报告模板。

该模板需要基于用户报告的“开始date”和“结束date”具有一定数量的行。 添加的行数将是“开始date”减“结束date”加1。

我现在只是通过复制一个logging的macros来计算出下面的代码:

Worksheets(5).Rows("5:27").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

在上面的代码中,我可以留下5,因为它将始终是开始date行的位置。 然而,27需要是一个variables。

是否有可能input一个variables行的范围,可以插入不断变化的行数(基于一个函数)? 有我应该使用的另一个代码?

任何帮助,将不胜感激!

并build议我应该用什么名字来描述某些事情也会有所帮助。 我是VBA的初学者,不太清楚语法。

编辑:额外的问题

谢谢@findwindow我在模块中创build了DateDiff函数,所以我得到所需的行数。 function如下。

 Function NumberofRows(pDate1 As Date, pDate2 As Date) NumberofRows = DateDiff("d", pDate1, pDate2) + 1 End Function 

我试图从函数返回到下面的代码的答案。 我收到“types不匹配”错误。 你能告诉我我的编码是错的还是有一个更简单的方法来做到这一点。 “SDI”和“EDI”被命名为包含开始date和结束date的单元格。

 Private Sub InsertRows() Dim i As Integer i = NumberofRows("SDI", "EDI") Worksheets(5).Rows("5:" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End Sub 

上面的代码被input到Userform,我有Call.InsertRows在另一个子对应的命令button点击。

非常感谢!!!

编辑2:另外,看着这个。 我相信我必须find一个NumberofRows输出的方式来确定哪个行variables“我”应该实际上,而不仅仅是我本身。 我想这是'i + 5',因为那是起始行? 或者可能只是将NumberofRows函数更改为DateDiff(“d”,x,x)+6?

你将一个命名区域的值传递给你的函数,所以你需要从你的子区域传递它们作为范围对象而不是date – 或者是string,因为它们是types不匹配的。

然后,在计算如何计算要插入的行数的情况下,需要将i的值添加到较低的行数,以获取较高的行数,以便select其中的所有行。

像这样的东西应该工作:

 Private Sub InsertRows() Dim i As Integer i = NumberofRows(Range("SDI"), Range("EDI")) Worksheets(5).Rows("5:" & 5 + i).Insert Shift:=xlDown End Sub 

 Function NumberofRows(pDate1 As Date, pDate2 As Date) NumberofRows = DateDiff("d", pDate1, pDate2) + 1 End Function