首页 > 解决方案 > 按字母顺序添加复选框

问题描述

我编写了一些代码,在其中循环遍历 Pivot-Items,如果值与值列表中的值匹配,则会在用户表单中创建一个复选框。我现在向列表中添加了另一个值,并且正如预期的那样,用户窗体使用复选框显示了新值,但是它作为列表的结尾,尽管它以“A”开头并且列表实际上是按字母顺序排序的。我已经刷新了几次,打开了工作表等,但是新值复选框不会进入它应该在的复选框列表的顶部。“如果”检查不是按字母顺序排列的,我相信这不会有任何区别。

我怀疑原因是我在数据透视表中最后添加了新名称?如何让数据透视表“忘记”它?


    'List Checkboxes
    intTop = 10 'set the cursor for the first checkbox

    Set frNew = Me.Controls.Add("Forms.frame.1")
    With frNew
        .Name = "SingleC"
        .Caption = "Single Clients"
        .Width = 150
        .Left = 180
        .Height = 170
        .Top = 100
    End With

    Set pf = pt.PivotFields("Various Names")

    For Each pi In pf.PivotItems
     If pi.Value = "dcc" Or _
        pi.Value = "eff" Or _
        pi.Value = "mgg" Or _
        pi.Value = "lpp" Or _
        pi.Value = "bgg" Or _
        pi.Value = "gtt" Then
        Set cbNew = frNew.Controls.Add("Forms.Checkbox.1")
        With cbNew
            .Name = pi.Value
            .Caption = pi.Value
            .Left = 10
            .Top = intTop
            .AutoSize = True
        End With
    intTop = intTop + 15
    Else
    End If
 Next pi

我希望这些名称按字母顺序排列,即从 dcc 开始,从上到下以 mgg 结尾。现在我的列表是之前的列表(在我添加新值之前),新值在最后,尽管它应该排在第二位。

标签: excelvbacheckbox

解决方案


推荐阅读