[英]Excel - Style format on drop down list selection
我正在使用APACHE POI生成一個excel文檔。 該文檔中包含許多用於數據驗證的下拉列表。 在這些下拉列表中選擇的數據始終是相同的類型:
標簽(ID)
對於填寫excel文檔的人來說,ID不如LABEL _重要,但ID仍然是解析目的所必需的。 我通過APACHE POI管理這些單元格的特定格式,以幫助用戶專注於對他/她更有用的信息:
我的問題:當用戶通過下拉列表更改單元格中的值時,單元格上的樣式格式會丟失。
我的問題:是否可以在我的excel文檔上設置一個偵聽器來完成以下工作:
我已經有一個執行“樣式格式”工作的函數,但我不知道如何將它插入這種監聽器...
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
Excel表單控件不支持任何類型的字體和顏色格式。 ActiveX控件允許您更改字體和顏色,但不能更改單個字符。 通過一些復雜的VBA和WinAPI調用,最有可能實現控件的自定義繪圖部分。
我能想到的最接近的替代方案是一些粗體擴展的Unicode字符 :
感謝確定單元格是否包含數據驗證 ,我已成功完成了我想要的操作:
Private Sub Workbook_SheetChange(ByVal Sh As Object,ByVal Target As Range)
Dim cell As Range, v As Long
For Each cell In Selection.Cells
v = 0
On Error Resume Next
v = cell.SpecialCells(xlCellTypeSameValidation).Count
On Error GoTo 0
If v <> 0 Then
formatReferenceCell (Target)
End If
Next
End Sub
Function formatReferenceCell(cellContent)
Dim X As Integer
For X = 1 To Len(cellContent)
If Mid(cellContent, X, 1) = "(" Then
Exit For
End If
Next X
With ActiveCell.Characters(Start:=1, Length:=X - 1).Font
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
End With
With ActiveCell.Characters(Start:=X, Length:=Len(cellContent) - X + 1).Font
.ThemeColor = xlThemeColorDark1
.Color = -4144960
End With
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.