简单的动态用户表单
Simple Dynamic UserForm
我想创建 ComboBox,它列出从 C5 到“C”行中最后一个非空列的动态更改范围内的非空值。感谢 我构建了以下解决方案,但在使用两个代码块时出现错误“权限被拒绝”:ComboBox1.RowSource 和 ComboBox.List.
Private Sub UserForm_Initialize()
Dim wsRoadmap As Worksheet
Set wsRoadmap = Sheets("Roadmap")
With wsRoadmap
ComboBox1.RowSource = .Range("C5", .Range("DJ5").End(xlToLeft)).Address
End With
With wsRoadmap
ComboBox1.List = .Range("C5", .Range("DJ5").End(xlToLeft)).Value
End With
End Sub
如果您想从列中向组合框添加项目,请使用此代码 -
选项显式
私人订阅 UserForm_Initialize()
Dim TCol As Long, CCol As Long
Dim wsRoadmap As Worksheet
Set wsRoadmap = Sheets("Roadmap")
TCol = wsRoadmap.Cells(5, Columns.Count).End(xlToLeft).Column
Me.ComboBox1.Clear
'loop from column C to the last used column of 5th row
For CCol = 3 To TCol
If VBA.Trim(wsRoadmap.Cells(5, CCol).Value) <> "" Then
Me.ComboBox1.AddItem wsRoadmap.Cells(5, CCol).Value
End If
Next CCol
结束子
但是如果你想从行中添加项目到组合框然后使用这个代码-
私人订阅 UserForm_Initialize()
Dim TRow As Long, CRow As Long
Dim wsRoadmap As Worksheet
Set wsRoadmap = Sheets("Roadmap")
TRow = wsRoadmap.Cells(Rows.Count, 3).End(xlUp).Row
Me.ComboBox1.Clear
For CRow = 5 To TRow
If VBA.Trim(wsRoadmap.Cells(CRow, 3).Value) <> "" Then
Me.ComboBox1.AddItem wsRoadmap.Cells(CRow, 3).Value
End If
Next CRow
结束子
我想创建 ComboBox,它列出从 C5 到“C”行中最后一个非空列的动态更改范围内的非空值。感谢
Private Sub UserForm_Initialize()
Dim wsRoadmap As Worksheet
Set wsRoadmap = Sheets("Roadmap")
With wsRoadmap
ComboBox1.RowSource = .Range("C5", .Range("DJ5").End(xlToLeft)).Address
End With
With wsRoadmap
ComboBox1.List = .Range("C5", .Range("DJ5").End(xlToLeft)).Value
End With
End Sub
如果您想从列中向组合框添加项目,请使用此代码 -
选项显式
私人订阅 UserForm_Initialize()
Dim TCol As Long, CCol As Long
Dim wsRoadmap As Worksheet
Set wsRoadmap = Sheets("Roadmap")
TCol = wsRoadmap.Cells(5, Columns.Count).End(xlToLeft).Column
Me.ComboBox1.Clear
'loop from column C to the last used column of 5th row
For CCol = 3 To TCol
If VBA.Trim(wsRoadmap.Cells(5, CCol).Value) <> "" Then
Me.ComboBox1.AddItem wsRoadmap.Cells(5, CCol).Value
End If
Next CCol
结束子
但是如果你想从行中添加项目到组合框然后使用这个代码-
私人订阅 UserForm_Initialize()
Dim TRow As Long, CRow As Long
Dim wsRoadmap As Worksheet
Set wsRoadmap = Sheets("Roadmap")
TRow = wsRoadmap.Cells(Rows.Count, 3).End(xlUp).Row
Me.ComboBox1.Clear
For CRow = 5 To TRow
If VBA.Trim(wsRoadmap.Cells(CRow, 3).Value) <> "" Then
Me.ComboBox1.AddItem wsRoadmap.Cells(CRow, 3).Value
End If
Next CRow
结束子