[英]VBA, Excel how to set particular styles without using their names?
VBA,Excel如何在不使用其名稱的情況下設置特定樣式?
名稱是本地化的,因此我的應用程序無用,將由不同語言的Excel版本使用。
我能想到的一個UGLY解決方案是保留應用於隱藏工作表上某些單元格的那些樣式列表,然后檢查它們的名稱並在運行時使用它們....
但必須有一些更簡單的方法,對嗎? MS不能破壞Excel這么重要的方面。
PS以下是注冊宏的一些示例性樣式:
Selection.Style = "Akcent 6"
Range("G4").Select
Selection.Style = "60% — akcent 6"
Range("G5").Select
Selection.Style = "Akcent 5"
為了在您分發的工作簿中建立樣式,您可以創建自己的樣式並為其指定名稱。 例如przemo1 , przemo2等。
例如:
Sub MakeAStyle()
ActiveWorkbook.Styles.Add Name:="PrZemo1"
With ActiveWorkbook.Styles("PrZemo1")
.IncludeNumber = True
.IncludeFont = True
.IncludeAlignment = True
.IncludeBorder = True
.IncludePatterns = True
.IncludeProtection = True
End With
With ActiveWorkbook.Styles("PrZemo1").Font
.Name = "Arial Narrow"
.Size = 11
.Bold = False
.Italic = False
.Underline = xlUnderlineStyleNone
.Strikethrough = False
.Color = -16776961
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
With ActiveWorkbook.Styles("PrZemo1")
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
End With
End Sub
編輯#1
以下是一些COLOR和相關索引:
此處的代碼可用於查找內置樣式名稱的本地化版本(使用其英文版本名稱)。 它效率不高但可能不需要。
Public Sub Foo()
localisedStyleName = FindLocalisedBuiltinStyleName("20% - Accent6")
End Sub
Public Function FindLocalisedBuiltinStyleName(EnglishStyleName) As String
accentNumber = 0
percentage = 0
If Strings.Left(EnglishStyleName, 6) = "Accent" Then
AccentNumber = CInt(Strings.Mid(EnglishStyleName, 7, 1))
Else
AccentNumber = CInt(Strings.Mid(EnglishStyleName, 13, 1))
Percentage = CInt(Strings.Mid(EnglishStyleName, 1, 2))
End If
ThemeColorIndex = AccentNumber + 4
FontToFind = 2
Select Case Percentage
Case 0
FontToFind = 1
TintAndShadeToFind = 0
Case 20
TintAndShadeToFind = 0.799981688894314
Case 40
TintAndShadeToFind = 0.599993896298105
Case 60
FontToFind = 1
TintAndShadeToFind = 0.399975585192419
End Select
For i = 1 To ActiveWorkbook.Styles.Count
ThemeColor = ActiveWorkbook.Styles.Item(i).Interior.ThemeColor
TintAndShade = ActiveWorkbook.Styles.Item(i).Interior.TintAndShade
Font = ActiveWorkbook.Styles.Item(i).Font.ThemeColor
If ThemeColor = ThemeColorIndex And Abs(TintAndShade - TintAndShadeToFind) < 0.001 And Font = FontToFind Then
FindLocalisedBuiltinStyleName = ActiveWorkbook.Styles.Item(i).NameLocal
Exit Function
End If
Next
FindLocalisedBuiltinStyleName = ""
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.