Ошибка в макросе. Color в градиентах
Тёмик / 17.02.2012, 21:57/00:41
Форум:
Версия программы:
15.2.0.686 (sp3)
Здравствуйте. Создал макрос для раскрашивания ч/б объектов.
Sub ChangeColor() Dim sh As Shape, i As Integer, col As Color hue = InputBox("Оттенок:") satur = InputBox("Насыщенность:") brig = InputBox("Изменение яркости:", , 0) For Each sh In ActivePage.Shapes Select Case sh.Fill.Type Case cdrUniformFill Call ChangeColorSub(sh.Fill.UniformColor) Case cdrFountainFill Call ChangeColorSub(sh.Fill.Fountain.StartColor) Call ChangeColorSub(sh.Fill.Fountain.EndColor) For i = 1 To sh.Fill.Fountain.Colors.Count Call ChangeColorSub(sh.Fill.Fountan.Colors.Item(i).Color) Next End Select Next sh End Sub Sub ChangeColorSub(ByRef col As Color) If col.Type = cdrColorGray Then col.ConvertToHSB col.HSBHue = hue col.HSBSaturation = satur If col.HSBBrightness + brig > 255 Then col.HSBBrightness = 255 Else If col.HSBBrightness + brig < 0 Then col.HSBBrightness = 0 Else col.HSBBrightness = col.HSBBrightness + brig End If End If col.ConvertToRGB End If End Sub
При передаче промежуточных цветов фонтанной заливки в функцию ChangeColorSub вылетает ошибка 'Run-time error 438. Object doesn't support this property or method'.
Есть там свои нюансы. Лучше так:
Sancho, большое спасибо.