我認爲這並不複雜,但是作爲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)' –
謝謝!完美工作。將在下面發佈更新的代碼。 –