用数组填充列表框

时间:2018-11-12 09:27:17

标签: arrays excel vba excel-vba listbox

恐怕我有一个相对具体的问题。我尝试用动态数组填充ListBox。到目前为止,代码似乎运行良好(根据F8),并且应该填充数组。

仅出于完成目的:For循环遍历列的每个单元格,并与许多if语句一起检查当前单元格内部是否具有特定的Letter(例如“ 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

1 个答案:

答案 0 :(得分:2)

此行:

ReDim ArrNutzer(k) As String

正在清空数组。您需要使用:

ReDim Preserve ArrNutzer(k) As String

要保留内容,您应该在增加k之前使用它,否则将以空白行结尾。