TintAndShade и PatternTintAndShade в Excel 2003 - PullRequest
1 голос
/ 15 октября 2011

Я добавил TintAndShade и PatternTintAndShade в макрос Excel 2007 vba.Коллега попробовал их в Excel 2003 и обнаружил, что эти команды там не работают.

Как я могу затем преобразовать следующий код во что-то, что будет работать в Excel 2003?

With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 5296274
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With

где строки, требующие преобразования:

    .TintAndShade = 0
    .PatternTintAndShade = 0

Примечание: я использую это для изменения свойств ячейки .

Ответы [ 2 ]

1 голос
/ 15 октября 2011

TintandShade работает только для фигур в Excel 2003. Ячейки застряли со стандартными уродливыми цветами. Вы можете сделать свой код условным на основе версии.

    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 5296274

    If Application.Version >= 12 then
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End If

    End With
0 голосов
/ 15 октября 2011

.PatternTintAndShade был добавлен в версии 2007, поэтому просто недоступен в 2003

.TintAndShade не относится к диапазонам 2003 года (только фигуры)

Тем не менее, установка их на 0 сводит на нет их эффект, поэтому, если нет чего-то, о чем вы нам не говорите, вам, возможно, не понадобится использовать их вообще.

EDIT

Хотя запись может быть полезной, она часто будет генерировать больше кода, чем требуется для вашей цели, особенно при настройке формата и т. Д. И она может создавать различный код в разных версиях. Поэтому используйте его как руководство, а не Евангелие.

Например, установка цвета заливки для диапазона (с использованием краски панели инструментов)

Excel 2010

Sub Macro1()
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

Excel 2003 (и запуск этого макроса в 2010 году дает тот же результат, что и в 2003)

Sub Macro1()
    With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With
End Sub
...