Стили относятся к объекту рабочей книги. На экране вы увидите их сгруппированными в «Тематические стили ячеек», «Хорошо, Плохо, Нейтрально» и т. Д. С помощью объектной модели Excel у нас нет доступа к этим «именам групп», поэтому мы не можем их читать или писать.
Наилучшее приближение состоит в том, чтобы прочитать свойство .BuiltIn
, например.
Sub StyleTest()
Dim MyStyle As Style
Set MyStyle = Range("A1").Style
If MyStyle.BuiltIn Then
' built in style
Else
' custom style
End If
End Sub
Даже если вы дублируете встроенный стиль, скопированный стиль будет создан под категорией «Пользовательский».
Получите название стиля через его .Name
или .Value
. Однако это свойство только для чтения, поэтому переименование стиля скорее означает дублирование стиля под другим именем, а затем удаление оригинала
Дублирование стиля действительно означает «создание» нового стиля и копирование всех свойств из исходного стиля ... по частям ... к сожалению!
Изменить стиль, как, например
Sub CreateStyle()
Dim MyStyle As Style
Set MyStyle = ActiveWorkbook.Styles.Add("Test") ' Note this will fail if style "Test" already exists
With MyStyle
.IncludeNumber = True
.IncludeFont = True
.IncludeAlignment = True
.IncludeBorder = True
.IncludePatterns = True
.IncludeProtection = False
End With
MyStyle.NumberFormat = "#.##0"
With MyStyle.Font
.Name = "Calibri"
.Size = 11
.Bold = False
.Italic = False
.Underline = xlUnderlineStyleNone
.Strikethrough = False
.ThemeColor = 6
.TintAndShade = -0.249946592608417
.ThemeFont = xlThemeFontMinor
End With
With MyStyle.Interior
.Pattern = xlSolid
.PatternColorIndex = 0
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.599963377788629
.PatternTintAndShade = 0
End With
End Sub
Майк, спасибо за ответ, очень полезно даже подтверждение об отсутствии доступа к категориям. Я работаю в основном в Word, и проблема не возникает, поскольку нет категорий. Это было бы не так уж плохо, если бы они не давали категории глупых имен. «Хорошее, плохое и нейтральное» звучит как спагетти «Запад» для меня! –