在Excel中更改单个列表框项的字体

Change individual listbox item font in Excel

提问人:BiGXERO 提问时间:6/8/2012 最后编辑:pnutsBiGXERO 更新时间:2/10/2015 访问量:18107

问:

我只想更改列表框中单个项目的属性。我目前让用户从列表框中选择一个项目,然后将其作为参数传递以进行处理。我希望能够从列表中删除项目,或者更好的是更改字体,以便他们可以看到哪些项目必须处理,哪些项目已经完成。

我有以下代码:

Sub updateLaunchScreen_CrossDayOff()

Dim i As Long

     With ReadingsLauncher

        With .dayListBox
            For i = 0 To .ListCount - 1
                If .Selected(i) Then
                    .Font.Strikethrough = True
                End If
            Next i
        End With

    End With

End Sub

但是,这会更改列表中的每个项目。

我已经在谷歌上搜索了这个问题,但找不到任何与更改列表框中单个列表项的属性相关的内容。

任何帮助将不胜感激。

VBA Excel-2007

评论


答:

4赞 Siddharth Rout 6/8/2012 #1

我希望能够从列表中删除项目

如果您想删除该项目,那么我建议这样做

Option Explicit

Private Sub CommandButton1_Click()
    If ListBox1.ListIndex > -1 Then
        ListBox1.RemoveItem (ListBox1.ListIndex)
    End If
End Sub

或者,更好的是,更改字体,以便他们可以看到哪些项目必须处理,哪些项目已经完成。

如果要查看已处理的项目,则可以使用此选项。

使列表框成为带有复选框选项的多选列表框。查看快照

enter image description here

若要获取此类型的列表框,可以在设计时或运行时设置属性。例如

设计时

enter image description here

运行时间

Private Sub UserForm_Initialize()
    With ListBox1
        .MultiSelect = fmMultiSelectMulti
        .ListStyle = fmListStyleOption
    End With
End Sub

评论

0赞 BiGXERO 6/12/2012
效果很好。非常感谢。出于好奇,当选择多个项目时,我将如何获取用户选择的最后一个项目。我目前从上到下遍历这些项目。这之所以有效,是因为这是用户应该操作的顺序,但是在我的其他一些项目中可能不起作用(例如,排序顺序和处理顺序不同)
1赞 Siddharth Rout 6/12/2012
每次用户选择条目时,将 ListIndex 存储在变量:)
0赞 BiGXERO 6/12/2012
Siddharth Rout:你是一个至高无上的家伙。你值得拥有美好的东西!非常感谢!