С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Mishania
79 / 79 / 84
Регистрация: 26.09.2012
Сообщений: 341
1

Создать диаграмму средствми VBA

02.12.2012, 15:56. Просмотров 1082. Ответов 3
Метки нет (Все метки)

Здравствуйте, уважаемые программисты. Помогите, пожалуйста, переделать код. Вот, что уже написал:
ссылка удалена
Нажатие кнопки Отмена запускает на выполнение процедуру CommandButton2_C1ick
Закрывает диалоговое окно.

Код этого приложения:

Visual Basic
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Private Sub CommandButton1_Click()
' Процедура табуляции функции
Dim х_нз As Double
Dim х_пз As Double
Dim х_шаг As Double
Dim УрГрафика As String
Dim nx As Integer
'nx – число протабулированных значений аргумента х
Dim n As Integer
Dim i As Integer
'n,i – вспомогательные целые переменные
'Проверка корректности ввода данных
If IsNumeric(TextBox2.Text) = False Then
MsgBox «Ошибка в начальном значении х», vbInformation, «График»
TextBox2.SetFocus
Exit Sub
End If
If IsNumeric(TextBox3.Text) = False Then
MsgBox «Ошибка в шаге х», vbInformation, «График»
TextBox3.SetFocus
Exit Sub
End If
If IsNumeric(TextBox4.Text) = False Then
MsgBox «Ошибка в конечном значении у», vbInformation, «График»
TextBox4.SetFocus
Exit Sub
End If
'Считывание с диалогового окна значений переменных
х_нз = CDbl(TextBox2.Text)
х_шаг = CDbl(TextBox3.Text)
х_пз = CDbl(TextBox4.Text)
УрГрафика = Trim(TextBox1.Text)
'Проверка согласованности введенных данных
If х_нз >= х_пз Then
MsgBox «Начальное значение х слишком большое», vbInformation, «График»
TextBox2.SetFocus
Exit Sub
End If
If х_нз + х_шаг >= х_пз Then
MsgBox «Шаг х великоват», vbInformation, «График»
TextBox3.SetFocus
Exit Sub
End If
'Замена в введенной формуле аргумента х на ссылку $A1
i = 1
Do
'Замена в введенной формуле аргумента х на ссылку $A1
If Mid(УрГрафика, i, 1) = «x» Or Mid(УрГрафика, i, 1) = «X» Then
n = Len(УрГрафика)
If (1 < i) And (i < n) Then
УрГрафика = Left(УрГрафика, i – 1) & «$A1» & Right(УрГрафика, n – i)
End If
If i = 1 Then
УрГрафика = «$A1» & Right(УрГрафика, n – 1)
End If
If i = n Then
УрГрафика = Left(УрГрафика, n – 1) & «$A1»
End If
End If
i = i + 1
Loop While i <= Len(УрГрафика)
ActiveSheet.Cells.Select
Selection.Clear
'Очистка на активном листе ранее введенных данных
ActiveSheet.Range(«A1»).Select
'Заполнение диапазонов значениями аргумента
With ActiveSheet
Range(«A1»).Value = х_нз 'Ввод в ячейку A1 начального значения
'Создание арифметической прогрессии по столбцу с указанным шагом и начальным значением
Range(«A1»).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=х_шаг, Stop:=х_пз, Trend:=False
End With
'Заполнение диапазона значениями функции
With ActiveSheet
nx = Range(«A1»).CurrentRegion.Rows.Count
'Определение числа строк в диапазоне заполнения
Range(«B1»).FormulaLocal = УрГрафика
'Ввод уравнения поверхности в ячейку B1
If IsError(Evaluate(УрГрафика)) = True Then
MsgBox «Ошибка в формуле», vbExclamation, «График»
Exit Sub
End If
'Заполнение диапазона Range(Cells(1, 2), Cells(nx, 2))
'начиная с ячейки B1, что эквивалентно протаскиванию маркера
'заполнения ячейки B1 на диапазон Range(Cells(1, 2),
Cells(nx, 2))
Range(«B1»).AutoFill Destination:=Range(Cells(1, 2), Cells(nx, 2)), Type:=xlFillDefault
End With
ActiveSheet.ChartObjects.Delete
'Удаление с рабочего листа всех ранее построенных диаграмм
ActiveSheet.Range(Cells(1, 2), Cells(nx, 2)).Select
'Выбор диапазона, по которому строится график
ActiveSheet.ChartObjects.Add(20, 19.5, 192, 192).Select
'Задание и выбор области на рабочем листе, где будет построен график,
'размер графика должен соответствовать размеру объекта Image1
Application.CutCopyMode = False
'Построение графика
ActiveChart.ChartWizard Source:=Range(Cells(1, 1), Cells(nx, 2)), Gallery:=xlLine, Format:=2, PlotBy:=xlColumns, CategoryLabels:=1, SeriesLabels:=0, HasLegend:=False, Title:="График",
CategoryTitle:="Аргумент", ValueTitle:="Функция y" & TextBox1.Text
ActiveSheet.ChartObjects(1).Activate
ActiveChart.Axes(xlValue).AxisTitle.Select
With Selection
HorizontalAlignment = xlCenter
VerticalAlignment = xlCenter
Orientation = xlUpward
End With
'Запись диаграммы в файл и загрузка картинки в Imagel
ActiveChart.Export Filename:="Graph.jpg",
FilterName:="JPEG"
UserForm1.Image1.Picture = LoadPicture(«graph.jpg»)
ActiveSheet.Range(«A1»).Select
End Sub
Private Sub CommandButton2 Click()
'Процедура закрытия диалогового окна
UserForm1.Hide
End Sub
Private Sub UserForm Initialize()
'Рисунок масштабируется с учетом относительных размеров
так, чтобы он помещался в объекте Imagel
With Imagel
PictureAlignment = fmPictureAlignmentTopLeft
PictureSizeMode = fmPictureSizeModeStretch
End With
End Sub
Надо переделать так, чтобы в итоге получилось вот это:
ссылка удалена
 Комментарий модератора 
Вложения грузим на форум!
Редактор сообщений, расширенный режим, скрепка, выбрать, загрузить.


Заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 15:56
Ответы с готовыми решениями:

Создать диаграмму по образцу
Дано только это и надо что бы было похоже как на рисунке. Кто сможет помочь?...

Создать диаграмму посередине листа
Помогите, пожалуйста, буду премного благодарен! Имеется макрос, который...

Создать макрос, который строит диаграмму по имеющимся данным
Здравствуйте, у меня такая проблема при запуске макроса в excel вылетает ошибка...

Создать приложение в VBA, позволяющее создать примечание при открытии книги Excel
нужно 1. Создать приложение в VBA, позволяющее создать примечание при открытии...

Есть ли хоть один толковый ресурс или книга, объясняющий, как создать любую диаграмму Excel
Вот к примеру такой код (см.ниже). Код не мой, строит линейную диаграмму на...

3
Alex77755
10780 / 3345 / 561
Регистрация: 13.02.2009
Сообщений: 9,826
02.12.2012, 19:26 2
Вот, что уже написал:
Меня терзают смутные сомнения в справедливости высказывания!
Сам написал код, сам сделал кучу комментариев и не можешь немного переделать?
Мне представляется другой вариант: ты нашёл что-то похожее, но сам разбираться не хочешь(не вижу конкретного вопроса, что не получается), а предлагаешь нам переделать чужой код под твоё задание.
Выкладывай проект свой. Конкретизируй, что не можешь понять-побороть - поможем разобраться.
Делать за тебя вряд ли будут. Хотя пути господни неисповедимы: может и сделают
0
Mishania
79 / 79 / 84
Регистрация: 26.09.2012
Сообщений: 341
05.12.2012, 13:08  [ТС] 3
Сначала было вот так:
Создать диаграмму средствми VBA


А нужно, чтобы получилось так:
Создать диаграмму средствми VBA

Спасибо.
0
Alex77755
10780 / 3345 / 561
Регистрация: 13.02.2009
Сообщений: 9,826
05.12.2012, 15:25 4
Опять продолжается вернисаж!!
ТС не хочет понять, что его картинки не нужны.
Приложи свою работу! Екселовский файл.
Со своим кодом, формой
Конкретно что не получается?
Ты же даже задание не написал.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2012, 15:25

Создать отчет на VBA
Всем привет. Прошу вас помочь сделать отчет с помощью VBA по датам. Полный...

Создать программу на vba
Создать программу под названием &quot;Телефонный справочник&quot;. Справочник содержит...

VBA Word создать гиперссылку
Задача такова: Имеется слово &quot;перевозки&quot; необходимо найти все слова &quot;перевозки&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru