Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Диаграмма / 15 сообщений из 15, страница 1 из 1
21.03.2016, 10:13
    #39196794
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
Здравствуйте!

Запускаю макрос, который формирует сводную диаграмму из сводной таблицы. Появляется такая ошибка. Нажимаю "Debug", потом на F5 и дальше запускается нормально. Почему так происходит? Как можно исправить?
...
Рейтинг: 0 / 0
21.03.2016, 18:40
    #39197425
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
ferzmikk,
может, отрисоваться не успела. Добавьте DoEvents перед этой командой, может, несколько раз в цикле.
...
Рейтинг: 0 / 0
22.03.2016, 07:11
    #39197593
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
Казанскийferzmikk,
может, отрисоваться не успела. Добавьте DoEvents перед этой командой, может, несколько раз в цикле.
Ставил. Не помогает.
Там нет цикла. Строиться несколько сводных диаграмм. Останавливается именно на этих строках
Код: vbnet
1.
chartShape.Chart.PlotArea.InsideLeft = PlotAreaInsideLeft
...
Рейтинг: 0 / 0
22.03.2016, 07:18
    #39197594
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
Нашел
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
...
DoEvents
chartShape.Chart.PlotArea.InsideLeft = PlotAreaInsideLeft
...
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
...
Рейтинг: 0 / 0
22.03.2016, 08:21
    #39197614
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
Теперь непонятно следующее
Код: vbnet
1.
2.
3.
4.
...
DoEvents
chartShape.Chart.HasTitle = False
...


Если запускать макрос без точек останова, то все равно выводиться заголовок.

Если запускать с точками остановами, то заголовок не выводиться.

Почему так?
...
Рейтинг: 0 / 0
22.03.2016, 15:30
    #39198066
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
ferzmikkНашел
Код: vbnet
1.
2.
Application.ScreenUpdating = False
...


Все равно прерывается
...
Рейтинг: 0 / 0
22.03.2016, 15:53
    #39198106
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
Вам предложили вставить цикл с DoEvents на секунду-другую, чтобы диаграмма успела прочухаться.
...
Рейтинг: 0 / 0
22.03.2016, 15:55
    #39198110
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
AntonariyВам предложили вставить цикл с DoEvents на секунду-другую, чтобы диаграмма успела прочухаться.
Вставлял DoEvents
...
Рейтинг: 0 / 0
22.03.2016, 18:26
    #39198254
hclubmk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
Хромал когда-то на таком костыле:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Private Sub Crutch()
Dim errHandlerCounter As Long: errHandlerCounter = 0
Dim a As Integer
On Error GoTo errHandler

a = a / 0

Exit Sub
errHandler:
errHandlerCounter = errHandlerCounter + 1
If errHandlerCounter > 15 Then
    On Error GoTo 0
Else
    DoEvents
    Sleep 10
    Resume
End If
End Sub
...
Рейтинг: 0 / 0
22.03.2016, 22:30
    #39198373
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
ferzmikkAntonariyВам предложили вставить цикл с DoEvents на секунду-другую, чтобы диаграмма успела прочухаться.
Вставлял DoEventsа ЦИКЛ с Doevents?
...
Рейтинг: 0 / 0
22.03.2016, 22:31
    #39198375
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
hclubmkХромал когда-то на таком костыле:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Private Sub Crutch()
Dim errHandlerCounter As Long: errHandlerCounter = 0
Dim a As Integer
On Error GoTo errHandler

a = a / 0

Exit Sub
errHandler:
errHandlerCounter = errHandlerCounter + 1
If errHandlerCounter > 15 Then
    On Error GoTo 0
Else
    DoEvents
    Sleep 10
    Resume
End If
End Sub

sleep тормознет весь поток, и диаграмму в том числе.
...
Рейтинг: 0 / 0
23.03.2016, 09:07
    #39198491
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
Вот одна из процедур, которая строит сводную диаграмму из сводной таблицы.

Код: vbnet
1.
2.
3.
4.
5.
6.
 
...
DoEvents
ThisWorkbook.Sheets(grafiki).Cells(endStrokaGrafiki5, 1).Select 'выделяет ячейку в сводной таблице
Call СводнаяДиаграмма8
...



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Public Const DiagrammaWidth As Long = 750
Public PlotAreaInsideWidth As Double
Public PlotAreaInsideLeft As Double
Public Const LeftTotal As Double = 460
Public Const left As Double = 630
Sub СводнаяДиаграмма8()
    
    DoEvents
    Sleep 10
    
    Dim chartShape As Shape
    Set chartShape = ThisWorkbook.Sheets("Лист1").Shapes.AddChart
    
    chartShape.left = LeftTotal
    chartShape.Top = 260  
    chartShape.Height = 40
    chartShape.Width = 180
    
    DoEvents
    chartShape.Chart.PlotArea.InsideLeft = PlotAreaInsideLeft
    chartShape.Chart.PlotArea.InsideWidth = PlotAreaInsideWidth
    chartShape.Chart.ChartType = xlColumnClustered
    chartShape.Chart.SetSourceData Source:=PT(10).TableRange2
    chartShape.Chart.HasLegend = False
    chartShape.Chart.Axes(xlCategory, xlPrimary).HasTitle = False
    chartShape.Chart.HasAxis(xlCategory, xlPrimary) = True
    chartShape.Chart.HasAxis(xlValue, xlPrimary) = True
    chartShape.Chart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
    chartShape.Chart.Axes(xlValue).HasMajorGridlines = False
    chartShape.Chart.Axes(xlCategory).HasMajorGridlines = False
    chartShape.Chart.Axes(xlCategory).MajorGridlines.Format.Line.DashStyle = msoLineDash 
    chartShape.Chart.SeriesCollection(1).ApplyDataLabels    
    chartShape.Chart.SeriesCollection(1).DataLabels.Font.Bold = True
    chartShape.Chart.SeriesCollection(1).DataLabels.Font.Color = RGB(23, 55, 94) 
    chartShape.Chart.SeriesCollection(1).DataLabels.Position = xlLabelPositionInsideBase
    chartShape.Chart.Axes(xlValue).TickLabelPosition = xlNone
    chartShape.Chart.Axes(xlCategory).TickLabelPosition = xlNone
    chartShape.Chart.Axes(xlCategory).Format.Fill.Visible = msoFalse
    chartShape.Chart.Axes(xlCategory).Format.Line.Visible = msoFalse
    chartShape.Chart.Axes(xlValue).Format.Fill.Visible = msoFalse
    chartShape.Chart.Axes(xlValue).Format.Line.Visible = msoFalse
    chartShape.Chart.SeriesCollection(1).Format.Fill.Visible = msoFalse   
    chartShape.Chart.HasTitle = False    
    chartShape.Chart.ChartArea.Format.Line.Visible = False  
End Sub



Останавливается именно на таких строках для разных диаграмм
Код: vbnet
1.
chartShape.Chart.PlotArea.InsideLeft = PlotAreaInsideLeft



И еще. Присутствует строка
Код: vbnet
1.
chartShape.Chart.HasTitle = False  


но заголовок все равно выводиться. А с точкой остановом не выводит.

Такое еще с этой строкой
Код: vbnet
1.
chartShape.Top = 260  


располагается не там, где нужно

Что тут не так?
...
Рейтинг: 0 / 0
23.03.2016, 15:04
    #39198830
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
Что можно еще сделать?
...
Рейтинг: 0 / 0
24.03.2016, 16:09
    #39199895
hclubmk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
ferzmikkЧто можно еще сделать?Файл выложить
...
Рейтинг: 0 / 0
25.03.2016, 10:39
    #39200397
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диаграмма
hclubmkferzmikkЧто можно еще сделать?Файл выложить
К сожалению не могу такой рабочий файл выложить, даже если урезать.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Диаграмма / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]