【问题标题】:Fill a listbox with an array用数组填充列表框
【发布时间】:2019-04-14 23:58:07
【问题描述】:

恐怕我有一个相对具体的问题。我尝试用动态数组填充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

【问题讨论】:

    标签: arrays excel vba listbox


    【解决方案1】:

    这一行:

    ReDim ArrNutzer(k) As String
    

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

    ReDim Preserve ArrNutzer(k) As String
    

    为了维护内容,你应该在增加 k 之前使用它,否则你会得到一个空白行。

    【讨论】:

    • 非常感谢它的工作^^ ..但有点愚蠢,默认是清空数组..我有点明白为什么但仍然......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 2017-05-28
    • 2022-01-24
    • 1970-01-01
    • 2013-12-19
    • 2011-02-02
    相关资源
    最近更新 更多