powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Диаграмма
15 сообщений из 15, страница 1 из 1
Диаграмма
    #39196794
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Запускаю макрос, который формирует сводную диаграмму из сводной таблицы. Появляется такая ошибка. Нажимаю "Debug", потом на F5 и дальше запускается нормально. Почему так происходит? Как можно исправить?
...
Рейтинг: 0 / 0
Диаграмма
    #39197425
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferzmikk,
может, отрисоваться не успела. Добавьте DoEvents перед этой командой, может, несколько раз в цикле.
...
Рейтинг: 0 / 0
Диаграмма
    #39197593
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Казанскийferzmikk,
может, отрисоваться не успела. Добавьте DoEvents перед этой командой, может, несколько раз в цикле.
Ставил. Не помогает.
Там нет цикла. Строиться несколько сводных диаграмм. Останавливается именно на этих строках
Код: vbnet
1.
chartShape.Chart.PlotArea.InsideLeft = PlotAreaInsideLeft
...
Рейтинг: 0 / 0
Диаграмма
    #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
Диаграмма
    #39197614
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь непонятно следующее
Код: vbnet
1.
2.
3.
4.
...
DoEvents
chartShape.Chart.HasTitle = False
...


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

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

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


Все равно прерывается
...
Рейтинг: 0 / 0
Диаграмма
    #39198106
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам предложили вставить цикл с DoEvents на секунду-другую, чтобы диаграмма успела прочухаться.
...
Рейтинг: 0 / 0
Диаграмма
    #39198110
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВам предложили вставить цикл с DoEvents на секунду-другую, чтобы диаграмма успела прочухаться.
Вставлял DoEvents
...
Рейтинг: 0 / 0
Диаграмма
    #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
Диаграмма
    #39198373
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkAntonariyВам предложили вставить цикл с DoEvents на секунду-другую, чтобы диаграмма успела прочухаться.
Вставлял DoEventsа ЦИКЛ с Doevents?
...
Рейтинг: 0 / 0
Диаграмма
    #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
Диаграмма
    #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
Диаграмма
    #39198830
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что можно еще сделать?
...
Рейтинг: 0 / 0
Диаграмма
    #39199895
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkЧто можно еще сделать?Файл выложить
...
Рейтинг: 0 / 0
Диаграмма
    #39200397
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hclubmkferzmikkЧто можно еще сделать?Файл выложить
К сожалению не могу такой рабочий файл выложить, даже если урезать.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Диаграмма
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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