Странная подпрограмма

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Странная подпрограмма

Сообщение dr.MIG » 25.01.2005 (Вт) 18:28

Проблема следующая: программа из TextBox'ов берёт числовые значения, отправляет их в Excel, строит там диаграмму, копирует её и вставляет в Word. Всё прекрасно работает, если я только запустил программу, но если я уже один раз построил диаграмму, закрыл Excel, и ещё раз попытался построить то диаграмма не строится. Вот код:

Код: Выделить всё
Sub CreateDiagram()
Clipboard.Clear   'очищаем буфер обмена
Set EApp = New Excel.Application
Set EWB = EApp.Workbooks.Open(App.Path & "\" & "file.xls")
Set EWSH = EWB.Worksheets.Add
'EApp.Visible = True
With EWSH
.Cells(1, 1).Value = "Справились"   'это для подписи в легенде
.Cells(2, 1).Value = "Не справились"   'это для подписи в легенде
.Cells(1, 2).Value = txtBad.Text   'первое значение
.Cells(2, 2).Value = txtGood.Text   'второе значение
End With
With EWB
.Charts.Add
.ActiveChart.ChartType = xl3DPie
.ActiveChart.SetSourceData Source:=Sheets(EWSH.Name).Range("A1:B2"), PlotBy:= _
        xlColumns

       ' при повторной попытке построить диаграмму почему-то
       'подпрограмма прерывается сдесь и не выполняет все ниже               'идущие операторы, а следовательно диаграмма не копируется

.ActiveChart.Location Where:=xlLocationAsObject, Name:=EWSH.Name
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Название диаграммы"
    End With
   
.ActiveChart.SeriesCollection(1).Select
.ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowPercent _
        , AutoText:=True, LegendKey:=False, HasLeaderLines:=True
.ActiveChart.PlotArea.Select
    With Selection.Border
        .Weight = xlHairline
        .LineStyle = xlNone
    End With
    With Selection.Interior
        .ColorIndex = 2
        .PatternColorIndex = 1
        .Pattern = xlSolid
    End With
.ActiveChart.ChartArea.Select
.ActiveChart.ChartArea.Copy
End With

'всё закрываем
EWB.Close False
EApp.Quit
Set EWSH = Nothing
Set EWB = Nothing
Set EApp = Nothing
End Sub


P.S. что-то я вообще не понял с какого перепуга подпрограмма обрывается в середине выполнения...
Salus populi suprema lex

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 27.01.2005 (Чт) 13:59

А в принципе из-за чего может подпрограмма оборваться на середине своего выполнения?...
Salus populi suprema lex

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 31.01.2005 (Пн) 16:08

dr.MIG писал(а):А в принципе из-за чего может подпрограмма оборваться на середине своего выполнения?...
Поставь обработчик - посмотри класс Err


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 6

    TopList