Return 用户窗体清单中的值
Return the value from a checklist on a UserForm
这制作了一个用户表单清单并且有效。
Sub UserForm_Initialize()
Dim LastRow As Long
Dim i As Long
Dim chkBox As MSForms.CheckBox
LastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)
chkBox.Caption = Worksheets("Sheet1").Cells(i, 1).Value
chkBox.Left = 5
chkBox.Top = 5 + ((i - 1) * 20)
Next i
End Sub
我想 select 我需要多少个框,点击一个命令按钮,然后将结果值粘贴到不同的单元格中。
例如,我在单元格 A1-A10 中有 1-10 个。第一部分为每个值 1-10 制作了一个清单。如果我选中 2、3、5 和 7 旁边的框,点击命令按钮,然后将 2、3、5 和 7 输入单元格 G2、G3、G5 和 G7。
我不知道如何让这最后一部分发生。我试着做 If 语句
Sub CommandButton1_Click()
If chkBox1 = False Then GoTo Here
Else
Range("G1").Value = Me.TextBox1.Text
End If
Here
End Sub
我明白了
"Compile error: Variable not defined"
我尝试了不同的名称而不是“chkbox1”,但得到了同样的错误。
我想这就是你想要的。
您可以使用控件的名称引用控件,并以类似于 Initialize
代码的方式循环遍历它们。通过在 sub 之前声明“LastRow”,我们可以在两个 sub 中使用它。
Dim LastRow As Long
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To LastRow
If Me.Controls("CheckBox_" & i) Then
Range("G" & i).Value = i
End If
Next i
End Sub
Sub UserForm_Initialize()
Dim i As Long
Dim chkBox As MSForms.CheckBox
LastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)
chkBox.Caption = Worksheets("Sheet1").Cells(i, 1).Value
chkBox.Left = 5
chkBox.Top = 5 + ((i - 1) * 20)
Next i
End Sub
这制作了一个用户表单清单并且有效。
Sub UserForm_Initialize()
Dim LastRow As Long
Dim i As Long
Dim chkBox As MSForms.CheckBox
LastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)
chkBox.Caption = Worksheets("Sheet1").Cells(i, 1).Value
chkBox.Left = 5
chkBox.Top = 5 + ((i - 1) * 20)
Next i
End Sub
我想 select 我需要多少个框,点击一个命令按钮,然后将结果值粘贴到不同的单元格中。
例如,我在单元格 A1-A10 中有 1-10 个。第一部分为每个值 1-10 制作了一个清单。如果我选中 2、3、5 和 7 旁边的框,点击命令按钮,然后将 2、3、5 和 7 输入单元格 G2、G3、G5 和 G7。
我不知道如何让这最后一部分发生。我试着做 If 语句
Sub CommandButton1_Click()
If chkBox1 = False Then GoTo Here
Else
Range("G1").Value = Me.TextBox1.Text
End If
Here
End Sub
我明白了
"Compile error: Variable not defined"
我尝试了不同的名称而不是“chkbox1”,但得到了同样的错误。
我想这就是你想要的。
您可以使用控件的名称引用控件,并以类似于 Initialize
代码的方式循环遍历它们。通过在 sub 之前声明“LastRow”,我们可以在两个 sub 中使用它。
Dim LastRow As Long
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To LastRow
If Me.Controls("CheckBox_" & i) Then
Range("G" & i).Value = i
End If
Next i
End Sub
Sub UserForm_Initialize()
Dim i As Long
Dim chkBox As MSForms.CheckBox
LastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)
chkBox.Caption = Worksheets("Sheet1").Cells(i, 1).Value
chkBox.Left = 5
chkBox.Top = 5 + ((i - 1) * 20)
Next i
End Sub