我正在使用此代码在C
列中加载已用范围的值。这可以正常工作,但是我还需要在组合框内的列E
和G
中加载由“-”分隔的值,例如,每个组合框条目都将读取"Row 1 Col C value - Row 1 Col E value - Row 1 Col G value"
。
Private Sub UserForm_Initialize()
Dim lastrow As Long
Dim ws As Worksheet
ws = mysheet
lastrow = ws.Columns("C").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
tag_combo.List = ws.Range("C" & ws.Range("start_row_pu").Row + 1 & ":" & "C" & lastrow).Value2
End If
End Sub
答案 0 :(得分:1)
示例呼叫合并列值
尽可能接近原始帖子,您可以将所有值读入基于1的2维临时数组,并通过&
连接第1,第3和第5列值,并将它们分配回组合框的{{ 1}}属性:
.List
由于评论中的问题而引起的其他笔记
在将范围数据(例如Private Sub UserForm_Initialize()
Dim ws As Worksheet
Set ws = Worksheets("Tabelle1")
Dim lastrow As Long, i As Long
lastrow = ws.Columns("A").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Dim v As Variant
v = ws.Range("C" & ws.Range("start_row_pu").Row + 1 & ":" & "G" & lastrow).Value2
For i = LBound(v) To UBound(v) ' join column values C, E, G
v(i, 1) = v(i, 1) & " - " & v(i, 3) & " - " & v(i, 5)
Next i
ReDim Preserve v(1 to Ubound(v), 1 to 1) ' redimension temporary array to 1 column
ComboBox1.List = v ' assign array back to .List property
End Sub
)分配给基于2维的基于1的变量数组C2:G4711
之后,您现在必须遍历基于1的数组数据,其中
v
总是从“ row” LBound(v)
开始于基于1的数组(所谓的下边界)中,并且1
返回上限,例如。 UBound(v)
(从第二行开始,= 4711-2-1) “行” ; 现在,您通过变量数组的“列” 索引4710
引用原始范围内的列 C
数据,即{{ 1}},通过索引1
到 v(i, 1)
:E
,通过索引{{1}到 3
}:v(i, 3)
。上面的示例通过G
连接器连接数组 column 项中的第1个,第3个和第5个值,并将结果字符串分配回第一个数组因此,该列将覆盖已读入范围列5
的数据。
最终,您必须将原来的5个数组列重新分配为仅1个,以便表示现在通过v(i, 5)
连接的所需数据行。