Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2019, 20:47   #1
sasha27
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 15
Вопрос Диаграммы в VBA Exel

Ребята, помогите, пожалуйста!

Дали задание на учебе по VBA: доработать код так, чтобы при выборе определенной radiobutton строился нужный тип диаграммы. Проблема в том, что до этого мы решали задания типа: "hello world!" или вывод результата сложения двух строк.

пример 56 https://helpiks.org/6-36578.html

Код:
Private Sub UserForm1_Initialize()
    With Image1
        .PictureAlignment = fmPictureAlignmentTopLeft
        .PictureSizeMode = fmPictureSizeModeStretch
    End With
End Sub
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(200, 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")
Kill "graph.jpg"
ActiveSheet.Range("A1").Select
End Sub
'Процедура закрытия диалогового окна
Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub
sasha27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прокрутка диаграммы TypeScript D3: Ищу разработчика. Имеется готовый рабочий проект. Необходимо добавить прокрутку диаграммы. Срочно. Анню Фриланс 0 23.12.2018 11:43
Диаграммы UML _Надежда_ Помощь студентам 4 08.12.2016 12:09
Выборочный импорт exel в exel McSim Microsoft Office Excel 3 01.03.2014 18:25
Код для диаграммы Bu$ter Microsoft Office Excel 4 05.09.2008 12:29
Диаграммы vvovik Компоненты Delphi 1 15.02.2008 19:12