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

What formula can I use to insert x number of rows, where x is the difference between two textbox responses?

我正在创建一个用户表单,它将为用户形成一个报告模板。

根据用户报告的"Start Date"和"End Date",模板需要有一定的行数。添加的行数将为 "Start Date" 减 "End Date" 加 1.

我目前只是通过复制录制的宏来弄清楚下面的代码:

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

在上面的代码中,我可以保留 5,因为它始终是开始日期行的位置。但是 27 需要是一个变量。

是否可以在 Rows 范围内输入一个变量,该变量可以插入不断变化的行数(基于函数)?我应该使用其他代码吗?

如有任何帮助,我们将不胜感激!

关于我应该使用什么名称来描述某些事物的建议也会有所帮助。我是 VBA 的初学者,不太了解语法。

编辑:其他问题

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

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

我正在尝试将函数的答案 return 放入下面的代码中。我收到一个错误 "Type Mismatch"。你能告诉我我的编码错误吗,或者是否有更简单的方法来做到这一点。 "SDI" 和 "EDI" 是包含开始日期和结束日期的命名单元格。

Private Sub InsertRows()
Dim i As Integer
i = NumberofRows("SDI", "EDI")

Worksheets(5).Rows("5:" & i).Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

上面的代码是在Userform里面输入的,我有 Call.InsertRows 在对应于命令按钮单击的另一个子项中。

非常感谢!!!

编辑 2: 另外,看看这个。我相信我必须为 NumberofRows 输出找到一种方法来确定 'i' 实际应该是哪个行变量,而不仅仅是 i 本身。我猜应该是 'i+5' 因为那是起始行?或者可能只是将 NumberofRows 函数更改为 DateDiff("d",x,x)+6?

您正在将命名范围的值传递给您的函数,因此您需要将它们作为范围对象而不是日期或字符串从您的子传递,因为日期或字符串是它们正在经历的类型不匹配。

然后在计算如何算出要插入多少行时,您需要将 i 的值添加到较低的行号以获得较高行的编号,以便选择其中的所有行。

像这样的东西应该可以工作:

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