用数组填充列表框
Fill a listbox with an array
恐怕我有一个相对具体的问题。我尝试用动态数组填充 ListBox
。到目前为止的代码似乎工作正常(根据 F8)并且应该填充数组。
只是为了完成:一个 For
循环遍历列的每个单元格,并与许多 if
语句一起检查当前单元格是否有特定的字母(例如 "A") 里面。如果是这样,请将一个字母(例如 "A")添加到数组中。
该列中有 97 行,大约 50 行应与 if 语句匹配。
那么简单的答案是:
Tabelle.Listbox.List = Array
但是没用。现在,ListBox
只显示 9 个空行。
可以肯定的是,我在这里也输入了 1 if
语句(还有更多,但这应该无关紧要,我想 ^^)。
我知道代码总体上可以改进,但让我们先修复错误 :D
Dim ArrNutzer As Variant
Dim VarNutzerSpalte As Integer
Dim VarNutzerZeilen As Integer
Dim VarAktuellerNutzer As String
Dim j As Integer
Dim k As Integer
Dim l As Integer
For i = 1 To VarAnzahlSpalten
VarAktuellerWert = ActiveSheet.Cells(1, i).Value
If VarAktuellerWert Like "Nutzer" Then
VarNutzerSpalte = i
End If
Next i
k = 0
VarNutzerZeilen = Worksheets("Filter").Cells(Rows.Count, VarNutzerSpalte).End(xlUp).Row
ReDim ArrNutzer(k) As String
For j = 2 To VarNutzerZeilen
VarAktuellerNutzer = Worksheets("Filter").Cells(j, VarNutzerSpalte).Value
If VarAktuellerNutzer Like "*A*" Then
ArrNutzer(k) = "A"
k = k + 1
ReDim ArrNutzer(k) As String
End If
Next j
FilterAuswahl.ListBoxPID.List = ArrNutzer
FilterAuswahl.Show
这一行:
ReDim ArrNutzer(k) As String
正在清空数组。您需要使用:
ReDim Preserve ArrNutzer(k) As String
为了维护内容,您应该在递增 k 之前使用它,否则您将得到一个空白行。
恐怕我有一个相对具体的问题。我尝试用动态数组填充 ListBox
。到目前为止的代码似乎工作正常(根据 F8)并且应该填充数组。
只是为了完成:一个 For
循环遍历列的每个单元格,并与许多 if
语句一起检查当前单元格是否有特定的字母(例如 "A") 里面。如果是这样,请将一个字母(例如 "A")添加到数组中。
该列中有 97 行,大约 50 行应与 if 语句匹配。
那么简单的答案是:
Tabelle.Listbox.List = Array
但是没用。现在,ListBox
只显示 9 个空行。
可以肯定的是,我在这里也输入了 1 if
语句(还有更多,但这应该无关紧要,我想 ^^)。
我知道代码总体上可以改进,但让我们先修复错误 :D
Dim ArrNutzer As Variant
Dim VarNutzerSpalte As Integer
Dim VarNutzerZeilen As Integer
Dim VarAktuellerNutzer As String
Dim j As Integer
Dim k As Integer
Dim l As Integer
For i = 1 To VarAnzahlSpalten
VarAktuellerWert = ActiveSheet.Cells(1, i).Value
If VarAktuellerWert Like "Nutzer" Then
VarNutzerSpalte = i
End If
Next i
k = 0
VarNutzerZeilen = Worksheets("Filter").Cells(Rows.Count, VarNutzerSpalte).End(xlUp).Row
ReDim ArrNutzer(k) As String
For j = 2 To VarNutzerZeilen
VarAktuellerNutzer = Worksheets("Filter").Cells(j, VarNutzerSpalte).Value
If VarAktuellerNutzer Like "*A*" Then
ArrNutzer(k) = "A"
k = k + 1
ReDim ArrNutzer(k) As String
End If
Next j
FilterAuswahl.ListBoxPID.List = ArrNutzer
FilterAuswahl.Show
这一行:
ReDim ArrNutzer(k) As String
正在清空数组。您需要使用:
ReDim Preserve ArrNutzer(k) As String
为了维护内容,您应该在递增 k 之前使用它,否则您将得到一个空白行。