用户窗体包含文本框和checkboxinput到工作表

用户一次最多可以input10个成员。

Column A will be "Team Number" Column B will be "Number of Member" Column C will be "Member Name" Column D will be "Month Available" Column E will be "Number of Family Members Coming" Column F will be "Family Members" 

我无法尝试input到工作表的用户窗体值。

 'inputValue Dim RowCount As Long Dim rStart As Long Dim rFirstEnd As Long Dim rLastEnd As Long RowCount = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.Count rMemberEnd = CLng(txtNoMember.Value) rMonthEnd = CLng(txtNoMember.Value) rFamilyMemberEnd = CLng(txtNoFamilyMemberValue) For rStart = 1 To rMemberEnd With Worksheets(“Sheet1").Range("A1") .Offset(RowCount + rStart, 0).Value = txtTeamNo.Text .Offset(RowCount + rStart , 1).Value = txtNoMember.Text .Offset(RowCount + rStart , 2).Value = Controls("txtMemberName” & Format(rStart, "00")).Value For rStart = 1 To rMonthEnd With Worksheets(“Sheet1").Range("A1") If Controls ("chkMonth” & Format(rStart, "00")).Value = True Then .Offset(RowCount + rStart , 3).Value = CLng(Right$(Controls("chkMonth” & Format(rStart, "00")).Name, 2)) .Offset(RowCount + rStart , 4).Value = txtNoFamilyMember.Text For rStart = 1 To rFamilyMemberEnd With Worksheets(“Sheet1").Range("A1") .Offset(RowCount + rStart , 5).Value = Controls("txtFamilyMember" & Format(rStart, "00")).Text End With End If End With End With Next 

这是工作表的input。 在这里输入图像说明

这就是UserForm的样子

在这里输入图像说明

我已经构build了一个类似于你的用户窗体,并相应地为其命名控件

在这里输入图像说明

现在,双击命令button并使用此代码

 Private Sub CommandButton1_Click() Dim ws As Worksheet Set ws = Sheets("Sheet1") Dim members As Long members = CLng(txtNoMember.Value) Dim family As Long family = CLng(txtNoFamilyMember.Value) Dim months As Long Dim i As Long For i = 1 To 12 If Controls("chkMonth" & Format(i, "00")).Value = True Then months = months + 1 End If Next i Dim total As Long total = members * months * family Dim j As Long, k As Long, m As Long, n As Long For i = 1 To members For j = 1 To total / members ws.Range("A" & ws.Range("A" & Rows.Count).End(xlUp).Row + 1) = CLng(txtTeamNo) ws.Range("B" & ws.Range("B" & Rows.Count).End(xlUp).Row + 1) = members ws.Range("C" & ws.Range("C" & Rows.Count).End(xlUp).Row + 1) = Controls("txtMemberName" & Format(i, "00")).Value ws.Range("E" & ws.Range("E" & Rows.Count).End(xlUp).Row + 1) = family Next j For j = 1 To months For m = 1 To family If Len(Controls("txtFamilyMember" & Format(m, "00")).Text) <> vbNullString Then ws.Range("F" & ws.Range("F" & Rows.Count).End(xlUp).Row + 1) = Controls("txtFamilyMember" & Format(m, "00")).Text End If Next m Next j For j = 1 To 12 If Controls("chkMonth" & Format(j, "00")).Value = True Then ws.Range("D" & ws.Range("D" & Rows.Count).End(xlUp).Row + 1) = CLng(Right$(Controls("chkMonth" & Format(j, "00")).Name, 2)) ws.Range("D" & ws.Range("D" & Rows.Count).End(xlUp).Row).Resize(family, 1).Formula = ws.Range("D" & ws.Range("D" & Rows.Count).End(xlUp).Row).Formula End If Next j Next i Me.Hide End Sub 

其中产生

在这里输入图像说明


Me.Hide隐藏表单而不是卸载它。 因此表格上的数据仍然可以从模块的代码中获得。

在你的模式下,你可以像这样加载表单

UserForm1.Show

然后当你完成从中获取数据(再次,这是在button的事件下的模块号),你卸载它

Unload UserForm1