我认为这并不复杂,但是作为VBA新手,在Google和Google玩了几天之后,我一直无法找到答案不同的代码。Excel VBA - 从可变数量的用户表单复选框创建数组
我有一个宏:
- 打开一个文件中的任何文件夹路径被命名为
- 搜索特定的文本文件中查找特定部分的开始,即A100
- 发现本节的结尾,即A110(根据文件长度可变)
- 将此范围内的单元格复制并粘贴到另一个特定范围,即O1:O10
- 使用复选框填充用户窗体在这个新的可变长度范围
每个小区我现在需要用户点击他们想要的复选框,然后这些复选框字幕保存为一个数组,然后我就可以在后面的宏呼吁。
也就是说,如果他们点击狗,猫,鸟和从复选框,输出会因为范围和复选框数量的可变长度的狗,猫,鸟
,我想不通如何让它循环遍历每一个并连接正确的值。
我认为有可能是一种方法,切出的值复制粘贴也与填充用户窗体,但是这是我能想出给出的范围的可变长度部分的唯一途径。
以下是在粘贴范围后生成用户窗体的代码。
Private Sub UserForm_Initialize()
Dim curColumn As Long
Dim i As Long
Dim codeRow As Long
Dim chkBox As msforms.CheckBox
curColumn = 15
codeRow = Range("O20").End(xlUp).Row
For i = 1 To codeRow
Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)
chkBox.Caption = Worksheets(1).Cells(i, curColumn).Value
chkBox.Left = 5
chkBox.Top = 5 + ((i - 1) * 20)
Next i
End Sub
ListBox控件可以有复选框https://stackoverflow.com/questions/10944064/change-individual-listbox-item-font-in -excel – Slai
您可以随时迭代Me.Controls集合并检查控件的类型/名称......但是,当然,整洁的解决方案是列表框,具有以下设计时属性:'MultiSelect = 1','ListStyle = 1',并在运行时,将'RowSource'属性设置为您的'Range(“O1:O”&coderow)' –
谢谢!完美工作。将在下面发布更新的代码。 –