Автор: Sellf Воскресенье, 14 Сентября 2008, 20:40
Помогите начинающему, пожалуйста.
Пишу код для рисования фигур. Вот его кусок:
Код
Sub ПримерФигуры()
Set Лист = Worksheets(1)
With Лист.Shapes.AddShape(msoShapeRectangle, 10, 10, 210, 110)
With .Fill
.ForeColor.RGB = QBColor(5)
.OneColorGradient msoGradientFromCorner, 1, 1
End With
End With
End Sub
По идее, при активации книги, должна рисоваться указанная фигура, но этого не происходит. Что я делаю не так?
Автор: Sellf Воскресенье, 14 Сентября 2008, 21:00
Ага, из макросов он вызывается. А как сделать так, чтобы фигура автоматом рисовалась?
Автор: pashulka Понедельник, 15 Сентября 2008, 21:42
Для создания графического об'екта, сразу после активации нужной рабочей книги, можно использовать нижеприведённое событие рабочей книги, которое необходимо разместить строго в модуле ThisWorkbook(ЭтаКнига)
Код
Private Sub Workbook_Activate()
With Me.Worksheets(1).Shapes.AddShape _
(msoShapeRectangle, 10, 10, 210, 110).Fill
.ForeColor.RGB = QBColor(5) 'RGB()
.OneColorGradient msoGradientFromCorner, 1, 1
End With
End Sub
Однако, есть ряд нюансов, которые желательно учесть :
- в нужной рабочей книге может не оказаться рабочих листов (сие маловероятно, однако, не так уж и невероятно)
- рабочий лист с номером(индексом) может быть защищён в отношении об'ектов (в этом случае мы, при попытке создать графический об'ект, получим ошибку, которую можно избежать просто добавив соответствующую проверку)
- и наконец, наш прямоугольник уже будет существовать (избежать повторов можно, если предварительно проверить наличие подобного об'екта, или создавать об'ект только при наличии некого флага/разрешения)
Автор: Sellf Вторник, 16 Сентября 2008, 14:47
Спасибо огромное, работает.