Excel Userform选择开始日期和结束日期,并在表格中填入介于两者之间的日期

Excel Userform选择开始日期和结束日期,并在表格中填入介于两者之间的日期,excel,vba,calendar,userform,Excel,Vba,Calendar,Userform,我创建了一个Userform,它接收事件的输入,并将该数据添加到表的C列的第一个空行中 用户表单有开始日期和结束日期的输入。下面的代码向表中添加了1行数据,其中包含开始日期和相应的信息 Private Sub CommandButton1_Click() Dim LastRow As Long, ws As Worksheet Set ws = Sheets("2019 Events") LastRow = ws.Range("C6").End(xlDown).Row + 1 ' Find

我创建了一个Userform,它接收事件的输入,并将该数据添加到表的C列的第一个空行中

用户表单有开始日期和结束日期的输入。下面的代码向表中添加了1行数据,其中包含开始日期和相应的信息

Private Sub CommandButton1_Click()

Dim LastRow As Long, ws As Worksheet

Set ws = Sheets("2019 Events")

LastRow = ws.Range("C6").End(xlDown).Row + 1 ' Finds the first blank row Column C

ws.Range("C" & LastRow).Value = start_date.Value
ws.Range("D" & LastRow).Value = audit_types.Value
ws.Range("E" & LastRow).Value = event_names.Value
ws.Range("G" & LastRow).Value = Site_names.Value
ws.Range("J" & LastRow).Value = names1.Value
ws.Range("K" & LastRow).Value = Names2.Value
ws.Range("M" & LastRow).Value = notes.Value

Unload UserForm1

End Sub
我的目标是,当用户输入开始和结束日期时,userform会在表中为开始和结束之间的每个日期填充一行条目,表单中的其余数据在所有行上都相同。

例如,如果开始日期为2019年1月12日,结束日期为2019年3月12日,则用户表单应向表中添加3行数据,其中C列中的3行分别为2019年1月12日、2019年2月12日和2019年2月12日,其余行与表中的其他值重复

其想法是填充事件及其信息的列表,但每个日期都需要自己的行项目,即使单个事件涵盖多天

计算出输入的开始日期和结束日期之间的差异,然后循环您的代码,每次循环到下一行,并从上一行向日期添加一天

例如:开始日期=1月1日结束日期=5月5日差异=4循环代码5次(4+1,以便将结束日期包含为最后一行)

如果使用将开始日期输入单元格B2,将结束日期输入单元格B3,然后将信息输入单元格C3,则下面的代码将起作用。如果使用UserForm,只需更新定义StartDate etc变量的行,概念将完全相同


既然这是一个很好的目标,但这并不意味着是一个代码编写服务,那么您可以用您自己为实现这个目标所做的努力来回答您的问题吗?
Sub Dates()

Dim StartDate As Date
Dim EndDate As Date
Dim NumberRows As Long
Dim L As Long
Dim DataInput As String

StartDate = [B1].Value
EndDate = [B2].Value
DataInput = [B3].Value
NumberRows = EndDate - StartDate + 1

'Populate first row
[A6].Value = StartDate
[B6].Value = DataInput

'Populate subsequent rows
L = 1

    Do Until L = NumberRows
    
    Range("A" & L + 6).Value = Range("A" & L + 5).Value + 1
    Range("B" & L + 6).Value = DataInput
    
    L = L + 1
    
    Loop

End Sub