【发布时间】:2020-03-23 09:14:10
【问题描述】:
我有一个用户表单,我想从中将值导入预定义的表(称为“Overzicht”)。
我有 12 个复选框(每个月一个),如果选中该复选框,我希望每个月都有一行。我想把复选框的标题放在表格的其中一列中。
例如,如果我检查 1 月、2 月和 3 月,我想将所有值导入到一个表中,分成三行,其中第一行“月份”列表示“一月”,第二行表示“二月”等。
我有代码检查选中复选框的数量并创建相同数量的行。我不知道如何在行中获得正确的标题。这是我目前所拥有的:
Private Sub CommandButton1_Click()
Dim rng As Range
Dim newrow As ListRow
Set rng = ThisWorkbook.Worksheets("Kostenoverzicht").Range("Overzicht")
Dim answer As Integer
'check number of rows to insert based on # of checked months
Dim ctl As MSForms.Control
Dim rows As Long
For Each ctl In Kostenoverzicht.Frame2.Controls
If TypeOf ctl Is MSForms.CheckBox Then
If Kostenoverzicht.Frame2.Controls(ctl.Name).Value = True Then
rows = rows + 1
End If
End If
Next
answer = MsgBox("Are you sure you want to continue?", vbQuestion + vbYesNo + vbDefaultButton1, "Zet in overzicht?")
If answer = vbYes Then
rng.Select
Set newrow = Selection.ListObject.ListRows.Add(alwaysinsert:=True)
With ws
For rows = 1 To rows
newrow.Range.Cells(rows, 1).Value = Me.TextBox1.Value
newrow.Range.Cells(rows, 2).Value = Me.CategorieBox.Value
newrow.Range.Cells(rows, 3).Value = Me.SubCategorieBox.Value
newrow.Range.Cells(rows, 4).Value = Me.BankrekeningBox.Value
If OptionButton1.Value = True Then newrow.Range.Cells(rows, 5).Value = "Af" Else newrow.Range.Cells(1, 5).Value = "Bij"
newrow.Range.Cells(rows, 6).Value = Me.TextBox2.Value
newrow.Range.Cells(rows, 7).Value = Me.CheckBox1.Caption
If OptionButton3.Value = True Then newrow.Range.Cells(rows, 8).Value = "Ja" Else newrow.Range.Cells(1, 8).Value = "Nee"
Next
End With
End If
End Sub
它将为所有行赋予值“January”。
我需要代码来替换 newrow.Range.Cells(rows, 7).Value = Me.CheckBox1.Caption 以获取选中复选框的标题。
我试图在几个网站上找到我的答案。
【问题讨论】:
-
那么你需要存储复选框的名称吗?如果它是真的,为什么不有一个单独的子并传递复选框的名称?
-
好吧,我需要存储复选框的标题,并认为我会一次完成所有操作,但不知道如何以简洁快速的方式完成此操作
-
尝试将
For rows = 1 To rows替换为For rw = 1 To rows之类的任何其他内容,显然是随后的...Cells(rows,...引用 -
嗯,这个变化给出了我需要的东西,除了我想将月份存储到的列之外,它仍然在所有行中给出“一月”