Excel - 下拉列表选择中的样式格式

时间:2017-03-24 10:38:35

标签: excel

我正在处理使用APACHE POI生成的Excel文档。 该文档中包含许多用于数据验证的下拉列表。 在这些下拉列表中选择的数据始终具有相同的类型:

LABEL(ID)

对于填写excel文档的人来说,ID不如LABEL _重要,但ID仍然是解析目的所必需的。 我通过APACHE POI管理这些单元格的特定格式,以帮助用户专注于对他/她更有用的信息:

  • LABEL是黑色的
  • (ID)为灰色

enter image description here

我的问题:当用户通过下拉列表更改单元格中的值时,单元格上的样式格式会丢失。

enter image description here

我的问题:是否可以在我的excel文档上设置一个侦听器来执行以下任务:

  • ANY 单元格
  • 填写 ANY 下拉列表
  • 任意工作簿表
  • 设置指定的单元格格式?

我已经有一个执行“样式格式”工作的函数,但我不知道如何将它插入这种监听器......

Function formatStyle()

    Dim cellContent As String
    Dim valeurLength As Integer
    For Each currentCell In Selection.Cells

        cellContent = currentCell.Value

        For valeurLength = 1 To Len(cellContent)
           If Mid(cellContent, valeurLength, 1) = "(" Then
              Exit For
           End If
        Next valeurLength
        With currentCell.Characters(Start:=1, Length:=valeurLength - 1).Font
            .ThemeColor = xlThemeColorLight1
             .TintAndShade = 0
        End With
        With currentCell.Characters(Start:=valeurLength, Length:=Len(cellContent) - valeurLength + 1).Font
             .ThemeColor = xlThemeColorDark1
             .Color = -4144960
        End With
    Next
End Function

2 个答案:

答案 0 :(得分:0)

Excel表单控件不支持任何类型的字体和颜色格式。 ActiveX控件允许您更改字体和颜色,但不能更改单个字符。通过一些复杂的VBA和WinAPI调用,最有可能实现控件的自定义绘图部分。

我能想到的最接近的选择是一些粗体extended Unicode characters

enter image description here

答案 1 :(得分:0)

感谢Determine if cell contains data validation,我设法完成了我想要的工作:

([A-Za-z ]+)