Sub Pgm()
Const Rbegin = "B2"
Const N = 100
ReDim Y(N, 1)
Dim ab, a_b, L2, Delta
ab = InputBox("Введите значения интервала a b" + vbCrLf + vbCrLf + "(образец приведен)", "Ввод данных", "-1,2 7,2")
If Len(ab) = 0 Then Exit Sub
a_b = Split(Replace(ab, ".", ","), " ")
L2 = UBound(a_b)
If L2 < 1 Then
MsgBox "Интервал не введен" + vbCrLf + vbCrLf + """" + ab + """"
Exit Sub
End If
If Not IsNumeric(a_b(0)) Or Not IsNumeric(a_b(L2)) Then
MsgBox "Значения интервала не корректны" + vbCrLf + vbCrLf + """" + a_b(0) + """ """ + a_b(L2) + """"
Exit Sub
End If
a_b(0) = CDbl(a_b(0))
a_b(L2) = CDbl(a_b(L2))
Delta = (CDbl(a_b(L2)) - CDbl(a_b(0))) / N
For i = 0 To N
Y(i, 0) = a_b(0) + Delta * i
Y(i, 1) = Func(a_b(0) + Delta * i)
Next
Sheets.Add After:=Sheets(Sheets.Count)
Range(Rbegin + ":" + Range(Rbegin).Offset(N, 1).Address) = Y
Dim NameList, Rdann, Rarg
NameList = ActiveSheet.Name
Rarg = Range(Rbegin).Offset(0, 0).Address + ":" + Range(Rbegin).Offset(N, 0).Address
Rdann = Range(Rbegin).Offset(0, 1).Address + ":" + Range(Rbegin).Offset(N, 1).Address
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range(NameList + "!" + Rdann)
ShapeName = ActiveSheet.Shapes(1).Name
With ActiveSheet.Shapes(ShapeName)
.ScaleWidth 1.3, msoFalse, msoScaleFromBottomRight
.ScaleHeight 1.2, msoFalse, msoScaleFromBottomRight
.ScaleWidth 1.3, msoFalse, msoScaleFromTopLeft
.ScaleHeight 1.2, msoFalse, msoScaleFromTopLeft
End With
With ActiveChart
With .Axes(xlCategory)
.Select
.TickMarkSpacing = 5
.TickLabelSpacing = 5
.AxisBetweenCategories = False
.CrossesAt = 1
.HasMajorGridlines = True
End With
.PlotArea.Select
.SeriesCollection(1).XValues = "=" + NameList + "!" + Rarg
End With
Range(Rarg).NumberFormat = "0.00"
Range("A1").Select
End Sub
Function Func(x)
If x < -1 Then Func = 0
If -1 <= x And x < 0 Then Func = Cos(x * 3.14159265358979)
If 0 <= x And x < 2 Then Func = x ^ 2 + 1
If 2 <= x And x < 7 Then Func = 7 - x
If x >= 7 Then Func = 0
End Function
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.